2016-05-05 210 views
0

我是新来的图形用户界面,只是学习如何使用Tkinter。我编写了一个python程序,让我的班级学生成为我的座位图对。程序本身运行良好;问题在于tkinter gui。 我试着让按钮生成并且每次都显示一组新的对。相反,只要我打开它,GUI即使不按下按钮也会显示第一组对。该按钮什么都不做。如果我在控制台中运行它,我不会收到任何错误消息或打印到控制台的任何内容。按钮不会重复命令tkinter

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() 

回答

0

在创建按钮,您提供的command结果display_pairs方法(这是None因为它没有任何return),而不是对方法的引用。

尝试:

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)) 
+0

感谢。我尝试过,但后来我得到这个: TypeError:display_pairs()只需要2个参数(给出1) –

+0

您是否修改了display_pairs方法?我没有使用'l'参数,因为它没有被使用。 –

+0

现在我有。它和我在尝试lambda时做的事情是一样的:它会初始显示一个结果,然后在随后按下按钮时变为空白。 –