<Return>密钥绑定

2024-10-02 22:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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()

问题是按回车键,它不打印任何东西(很明显,我把它运行到一个终端上) 谢谢!在


Tags: selfappinittkinterdefbluemigratelabel
1条回答
网友
1楼 · 发布于 2024-10-02 22:32:00

你可能会遇到的问题是:

AttributeError: 'tkapp' object has no attribute 'label'

原因是: 必须在声明label时执行此操作:

^{pr2}$

在下面,您使用label作为类migrate_tk的实例,但在声明它时不是这样

enter小部件不会自动获得焦点,因此当您在没有选择小部件的情况下按enter时,它不会做任何事情。在

您需要做的是取消对代码的注释:

self.entry.focus_set()

在那之后它会正常工作的。在

相关问题 更多 >