我尝试制作以下程序:打开程序时,会显示一个条目和一个标记为“9”的按钮。单击按钮“9”时,在条目末尾添加字符“9”。
下面给出的代码是我写的,但它不能按我的意图工作。按钮不起作用,条目显示'09'而不是'0'。
# -*- coding : utf-8 -*-
import Tkinter as Tk
class calculator:
def __init__(self, master):
self.num = Tk.StringVar()
self.opstate = None
self.tempvar = 0
# entry
self.entry = Tk.Entry(root, textvariable = self.num, justify=Tk.RIGHT, width = 27)
self.entry.pack(side = Tk.TOP)
self.num.set("0")
# Buttons
self.numbuts = Tk.Frame(master)
self.ins9 = Tk.Button(self.numbuts, text = "9", width = 3, command = self.fins(9))
self.ins9.pack()
self.numbuts.pack(side = Tk.LEFT)
##### Functions for Buttons #####
def fins(self, x):
self.entry.insert(Tk.END, str(x))
root = Tk.Tk()
calc = calculator(root)
root.mainloop()
我想部分command = self.fins(9)
有问题,但我不知道如何解决它。谢谢你的帮助。
答案 0 :(得分:1)
代码传递方法调用的返回值,而不是方法本身。
使用以下内容传递回调函数:
self.ins9 = Tk.Button(self.numbuts, text="9", width=3, command=lambda: self.fins(9))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^