我用tkinter和python编写一个简单的gui。这是代码:
from tkinter import *
class migrate_tk(Tk):
def __init__(self, parent):
Tk.__init__(self, parent)
self.geometry("400x400")
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
self.entry = Entry(self)
self.entry.grid(column=0, row=0, sticky='EW')
#~ self.entry.focus_set()
self.entry.bind("<Return>", self.OnPressEnter)
#~ self.bind('<Return>', self.OnPressEnter)
label = Label(self, anchor="w", fg="white", bg="blue")
label.grid(column=0, row=1, columnspan=2, sticky="EW")
self.grid_columnconfigure(0, weight=1)
self.resizable(True, False)
def OnPressEnter(self,event):
print ("You pressed enter")
if self.label["bg"] == "blue":
self.label["bg"] = "yellow"
else: self.label["bg"] = "blue"
if __name__ == "__main__":
app = migrate_tk(None)
app.title('app')
app.mainloop()
问题是按下返回键,它不会打印任何东西(显然我将它运行到终端) 谢谢!
答案 0 :(得分:0)
您可能遇到的问题是:
AttributeError: 'tkapp' object has no attribute 'label'
&安培;原因是:
你必须在声明label
:
self.label = Label(self, anchor="w", fg="white", bg="blue")
self.label.grid(column=0, row=1, columnspan=2, sticky="EW")
在下面你使用label作为类migrate_tk
的一个实例,但是当你声明它时
输入窗口小部件不会自动获得焦点,因此当您按 Enter 而不选择窗口小部件时,它不会执行任何操作。
您需要做的是取消注释代码:
self.entry.focus_set()
&安培;之后它会正常工作。