0
继续前进,但现在我无法摆脱canvaspopup,即使使用pack_forget()。其他的一切似乎都行得通,我准备用完整程序的一个非常愚蠢的版本来测试它,所以我可以在这里发布代码而不用发布超过1000行代码。隐藏画布,第2部分
import tkinter as tk
from tkinter import *
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.keys = dict.fromkeys(('Left', 'Right', 'Up', 'Down', 'Prior', 'Next', 'Shift_L', 'Alt'))
self.frame = tk.Frame(self,bg='gray', width=1366, height=714)
self.frame.pack()
self.canvas = tk.Canvas(self, background="black", width=714, height=714)
self.canvas.pack(fill='both', expand=True)
self.canvas.place(x=652,y=0)
self.canvas.bind("<Alt_L><w>", self.mgram)
self.canvas.bind("<Left>", self.left)
self.canvas.focus_set()
def left(self,event):
print('canvas left')
def popleft(self,event):
print('popup left')
def popescape(self,event):
self.canvas.focus_set()
self.canvaspopup.pack_forget()
def mgram(self,event):
self.canvaspopup = Canvas(self, width=800, height=614)
self.canvaspopup.pack(fill='both', expand=True)
self.canvaspopup.place(x=284,y=52)
self.png = Label(self.canvaspopup)
self.png.pack()
self.popupimage1 = PhotoImage(file='example.png')
self.canvaspopup.bind("<Left>", self.popleft)
self.canvaspopup.bind("<Escape>", self.popescape)
self.canvaspopup.focus_set()
self.png.config(image=self.popupimage1)
s = Canvas(self.canvaspopup, width=800, height=14)
s.pack_propagate(0)
s.place(x=0,y=600)
v = Label(s, fg='black',borderwidth=0,anchor='center',text = 'Image of: ')
v.pack()
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
如何使弹出的消失,据说是我刚才的问题布赖恩说,我可以用pack_forget(),但不能在这里工作。其他的一切似乎都是正确的。仍不确定为什么我今天早上在家里无法让focus_set工作。不知道我现在改变了什么?
谢谢你的解释。我将不得不对这三种方法做更多的研究。我认为网格和包装被用于最终“启动”该对象。我不知道地方可能会如此。我认为这只是为了控制屏幕上放置物品的位置,而不是物体的实际“设置”。 – confused
@confused:所有三者都有相同的目的:在屏幕上安排小部件。 –