|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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")
复制代码
在这里,你使用了 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"。
如果问题已经解决,请设置最佳答案
|
|