微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在tkinter的另一个画布内制作画布的透明背景?

如何解决如何在tkinter的另一个画布内制作画布的透明背景?

我有一个代码,我想在画布中的背景图像上使用上面的 Vkeyboard。但我面临的问题是 VKeyboard 的背景认为白色,我希望它是透明的。我已将画布用于另一个画布以在所需位置显示 Vkeyboard。

以下是我的代码

from tkinter import *
from PIL import Image,ImageTk,ImageSequence


class tkinterapp(Tk): 
      
    def __init__(self,*args,**kwargs):  
          
        Tk.__init__(self,**kwargs) 
          
        container = Frame(self)   
        container.pack(side = "top",fill = "both",expand = True)  
   
        self.frames = {}
        
        for F in (Page1,Page2): 
   
            frame = F(container,self) 

            self.frames[F] = frame  
   
            frame.grid(row = 0,column = 0,sticky ="nsew")
        self.update()
        self.show_frame(Page1)

    def show_frame(self,cont):
        if cont not in self.frames:
            self.frames[cont] = cont(self.container,self)
        frame = self.frames[cont]
        frame.tkraise()
        frame.event_generate("<<ShowFrame>>")

   

class Page1(Frame): 
      
    def __init__(self,parent,controller): 
          
        Frame.__init__(self,parent)
        self.controller = controller
        self.bind("<<ShowFrame>>",self.myPage1)

    def myPage1(self,controller):
        super(Page1).__init__()

        canvas = Canvas(self,width=2300,height=900,bd=0,highlightthickness=0,relief='ridge')
        canvas.pack()

        canvas1 = Canvas(canvas,width=2000,height=500,relief='ridge')
        canvas.create_window(730,600,window=canvas1)

        self.background = PhotoImage(file="Images/background.png")
        canvas.create_image(525,425,image=self.background)

        self.canvas_textBox = canvas.create_text(290,250,text='SOME TEXT',anchor=NW,fill="cyan",font=('Arial',72))

        buttons = [
            '1','2','3','4','5','6','7','8','9','0','=','q','w','e','r','t','y','u','i','o','p','<-','a','s','d','f','g','h','j','k','l',';','"','z','x','c','v','b','n','m',','.','/','SHIFT',' Space ',]
        curBut = [-1,-1]
        buttonL = [[]]
        #entry = Text(Keyboard_App,width=97,height=8)
        #entry.grid(row=0,columnspan=15)

        varRow = 1
        varColumn = 0

        def leftKey(event):
            if curBut == [-1,-1]:
                curBut[:] = [0,0]
                buttonL[0][0].configure(highlightbackground='red')
            elif curBut[0] == 4:
                buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
                curBut[:] = [0,10]
                buttonL[0][10].configure(highlightbackground='red')
            else:
                buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
                curBut[:] = [curBut[0],(curBut[1]-1)%11]
                buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')

        def rightKey(event):
            if curBut == [-1,0]
                buttonL[0][0].configure(highlightbackground='red')
            else:
                buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
                curBut[:] = [curBut[0],(curBut[1]+1)%11]
                buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')

        def upKey(event):
            if curBut == [-1,0]
                buttonL[0][0].configure(highlightbackground='red')
            elif curBut[0] == 0:
                buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
                curBut[:] = [(curBut[0]-1)%5,0]
                buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')
            else:
                buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
                curBut[:] = [(curBut[0]-1)%5,curBut[1]]
                buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')

        def downKey(event):
            if curBut == [-1,0]
                buttonL[0][0].configure(highlightbackground='red')
            elif curBut[0] == 3:
                buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
                curBut[:] = [(curBut[0]+1)%5,0]
                buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')
            else:
                buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
                curBut[:] = [(curBut[0]+1)%5,curBut[1]]
                buttonL[curBut[0]][curBut[1]%11].configure(highlightbackground='red')

        def select(value,x,y):
            if curBut != [-1,-1]:
                buttonL[curBut[0]][curBut[1]].configure(highlightbackground='#d9d9d9')
            curBut[:] = [x,y]
            buttonL[x][y].configure(highlightbackground='red')
            if value == "<-":
                input = canvas.get(self.canvas_textBox,"1.0",'end-2c')
                self.canvas_textBox.delete("1.0",END)
                self.canvas_textBox.insert("1.0",input,END)

            elif value == " Space ":
                self.canvas_textBox.insert(END,' ')

            elif value == "Tab":
                self.canvas_textBox.insert(END,'   ')

            else:
                self.canvas_textBox.insert(END,value)

        for button in buttons:
            if button != " Space ":
                but = Button(canvas1,text=button,width=5,bg="#000000",fg="#ffffff",highlightthickness=4,activebackground="#ffffff",activeforeground="#000000",relief="raised",padx=12,pady=4,bd=4,command=lambda x=button,i=varRow-1,j=varColumn: select(x,i,j))
                buttonL[varRow-1].append(but)
                but.grid(row=varRow,column=varColumn)

            if button == " Space ":
                but = Button(canvas1,width=60,padx=4,j))
                buttonL[varRow-1].append(but)
                but.grid(row=6,columnspan=16)

            varColumn += 1
            if varColumn > 10:
                varColumn = 0
                varRow += 1
                buttonL.append([])

        canvas1.bind('<Left>',leftKey)
        canvas1.bind('<Right>',rightKey)
        canvas1.bind('<Up>',upKey)
        canvas1.bind('<Down>',downKey)

class Page2(Frame):
    def __init__(self,controller):
        Frame.__init__(self,self.myPage2)


    def myPage2(self,controller):
        super(Page2).__init__()

        canvas = Canvas(self,relief='ridge')
        canvas.pack()

        self.background = PhotoImage(file="Images/background.png")
        canvas.create_image(525,image=self.background,tags="B")

        canvas.create_text(140,376,text="Second Frame")

app = tkinterapp()
app.title("Test")
app.mainloop() 

请帮助我实现这一目标!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?