我使用python GUI更新的python语言 我会尝试恢复列表框中的选项,我在这里和那里找到了一些代码 但是另一个尝试打包他们。
最后我写了这个它除了列表框事件之外效果很好,我有这个错误* 当我点击它,它来自哪里?
如果你们中的任何人有关于如何构建python GUI的链接或书籍......
问候
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 1470, in __call__
return self.func(*args)
TypeError: onselect() takes exactly 1 argument (2 given)
class Interface(Frame):
""" """
def __init__(self, fenetre, **kwargs):
Frame.__init__(self, fenetre, width=768, height=576, **kwargs)
self.pack(fill=BOTH)
self.nb_clic = 0
self.nb_clic2 = 0
# widgets
self.Btn_quit = Button(self, text="Quit", command=self.quit)
self.Btn_quit.pack(side="left")
self.Btn_clear = Button(self, text="Clear plot", fg="red",
command=self.clic)
self.Btn_clear.pack(side="right")
self.Btn_Add = Button(self, text="Add plot", fg="Blue",
command=self.clic2)
self.Btn_Add.pack(side="right")
self.Btn_setdim = Button(self, text="Set_dim", fg="Blue",
command=self.clic2)
self.Btn_setdim.pack(side="right")
self.lbx=Listbox(self)
self.lbx.bind('<<ListboxSelect>>', self.onselect)
Vals = ['one', 'two', 'tree', 'four']
for s in Vals:
self.lbx.insert(END, s)
self.sb = Scrollbar(self)
self.sb.config(command = self.lbx.yview)
self.lbx.config(yscrollcommand = self.sb.set)
self.lbx.pack(side = "left", fill = "y")
self.sb.pack(side = "right", fill = "y")
def onselect(evt):
# Note here that Tkinter passes an event object to onselect()
w = evt.widget
index = int(w.curselection()[0])
value = w.get(index)
print 'You selected item %d: "%s"' % (index, value)
def clic(self):
self.nb_clic += 1
self.message["text"] = "you cliked {} time.".format(self.nb_clic)
def clic2(self):
""" """
if __name__ == "__main__":
fenetre = Tk()
interface = Interface(fenetre)
interface.mainloop()
interface.destroy()
答案 0 :(得分:1)
请注意,您正在一个类中编写方法,因为所有其他方法都必须具有self
参数。因此,当调用onselect
时,它会被赋予参数:self
和事件对象,尽管这些方法只能给出一个参数。
只需将方法更改为:
def onselect(self, event):
...