首页 文章

按钮不会重复命令tkinter [重复]

提问于
浏览
0

这个问题在这里已有答案:

我是GUI的新手,只是学习如何使用Tkinter . 我写了一个python程序,让我的 class 的学生成对我的座位表 . 该计划本身运行良好;问题是tkinter gui . 我试图让按钮生成并每次显示一组新的对 . 相反,只要我打开它,GUI就会显示第一组对,甚至没有按下按钮 . 按钮什么都不做 . 如果我在控制台中运行它,我不会收到任何错误消息或打印到控制台的任何内容 .

Button commands in Tkinter我看到了使用lambda的答案 . 当我尝试它时,标签最初是空白的 . 第一次按下按钮时,它将按预期显示对,但在后续按下时,它会再次使标签变为空白 .

我不确定问题是什么 . 你能帮助我吗?这是代码:

from Tkinter import *
from SeatingChart import *



root = Tk() 

class App:

    def __init__(self, master):
        self.win = Frame(master)
        self.win.pack()
        self.d = Label(self.win, text = "", width=140)
        self.d.pack()
        self.b = Button(self.win, text="Pair Up!", command=self.display_pairs(roster))
        self.b.pack()

    def display_pairs(self, l):
        self.d.config(text=pair(roster))


app = App(root)

mainloop()

1 回答

  • 0

    创建按钮时,您提供的 commanddisplay_pairs 方法的结果(因为它不是 return ,所以是 None ),而不是对方法的引用 .

    尝试:

    class App:
    
        def __init__(self, master):
            self.win = Frame(master)
            self.win.pack()
            self.d = Label(self.win, text = "", width=140)
            # Maybe display an initial roster?
            # self.d = Label(self.win, text = pair(roster), width=140)
            self.d.pack()
            self.b = Button(self.win, text="Pair Up!", command=self.display_pairs)
            self.b.pack()
    
        def display_pairs(self):
            self.d.config(text=pair(roster))
    

相关问题