tkinter的command问题
import tkinter as tkclass minster:
def __init__(self,root):
frame = tk.Frame(root)
frame.pack()
self.button = tk.Button(frame, foreground = 'blue', command = self.hanshu(), text = "nijh" )
self.button.pack()
def hanshu(self):
print("miaoa")
a = tk.Tk()
b = minster(a)
a.mainloop()
为什么按下按钮前也会打印出"miaoa",请大神指教 在你的代码中,问题出现在这一行:
self.button = tk.Button(frame, foreground='blue', command=self.hanshu(), text="nijh")
在这里,你使用了command=self.hanshu()来设置按钮的命令。但是你需要注意,command参数接受一个函数对象作为参数,而不是函数的调用结果。
所以,当你写成command=self.hanshu()时,它实际上立即调用了self.hanshu()方法,并将其返回值作为按钮的命令。因此,在按钮创建时就执行了self.hanshu()方法,导致打印了"miaoa"。
要解决这个问题,你只需将self.hanshu作为函数对象传递给command参数,而不是调用它:
self.button = tk.Button(frame, foreground='blue', command=self.hanshu, text="nijh")
通过移除括号,将self.hanshu变为函数对象,这样当按钮被点击时,才会执行self.hanshu()方法,并打印"miaoa"。
修改后的代码如下:
import tkinter as tk
class Minster:
def __init__(self, root):
frame = tk.Frame(root)
frame.pack()
self.button = tk.Button(frame, foreground='blue', command=self.hanshu, text="nijh")
self.button.pack()
def hanshu(self):
print("miaoa")
a = tk.Tk()
b = Minster(a)
a.mainloop()
现在,当你按下按钮时,才会打印出"miaoa"。
如果问题已经解决,请设置最佳答案 问题出在这一行代码上:
self.button = tk.Button(frame, foreground = 'blue', command = self.hanshu(), text = "nijh" )
在这里,你将 self.hanshu() 作为 command 参数传递给了 Button ,但是你应该只传递函数名而不是调用函数。
正确的写法是将 self.hanshu 作为 command 参数传递,如下所示:
self.button = tk.Button(frame, foreground='blue', command=self.hanshu, text="nijh")
这样,当按钮被点击时, self.hanshu 函数才会被调用,而不是在创建按钮时就被调用。 把函数当成变量,应该传变量本身而不是他的结果
页:
[1]