我正在使用tkinter在Python 3中工作,并希望在弹出窗口中有一个按钮来运行命令并销毁弹出窗口。我下面的代码在前端工作,但在命令行上出错,这是一个可以解决的问题吗?
我得到的错误是:
追踪(最近的呼叫最后):
文件“C:Python34 \ lib \ tkinter__intit __。py”,__ call__中的第1538行 return self.func(* args)
文件“test.py”,第14行,在 command = lambda:display_something()* popup.destroy())
TypeError:&:'NoneType'和'NoneType'不支持的操作数类型
from tkinter import *
class MainView(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.grid()
new_popup = Button(self,text = 'Make A Popup!',
command = lambda: popup()).grid(row=0,column=0)
def popup():
popup = Toplevel()
button = Button(popup, text = 'Display something on the command line',
command = lambda: display_something() & popup.destroy())
button.pack()
def display_something():
print('popup ran the command')
def main():
root = Tk()
root.title('Eric\'s Archiver')
app = MainView(root)
root.mainloop()
if __name__ == '__main__':
main()
答案 0 :(得分:2)
&
是“and”运算符,但适用于bits
,不适用于booleans
。
您需要布尔运算符and
。
但是在您的代码or
中应该更好地工作,因为第一个函数返回None
被视为False
- 而False and anything
始终为False
所以无需执行anything
。但False or anything
可能会False
或True
,具体取决于anything
,因此必须执行anything
才能获得最终结果。)。
lambda: display_something() or popup.destroy()