Anaconda 水蟒Spyder下tkinter的破坏问题
在下面的程序中,我可以使用关闭按钮关闭窗口,但既不能使用“Esc”绑定,也不能使用按钮回调。我被送到了IPython控制台,但窗口仍停留在这里,有一个旋转的轮子!在码头或与水蟒闲置时工作正常。我使用Mac、High Sierra、Anaconda和Spyder的最新版本(IPython 7.1.1、Spyder 3.3.2)。我怀疑斯派德有问题Anaconda 水蟒Spyder下tkinter的破坏问题,anaconda,ipython,spyder,Anaconda,Ipython,Spyder,在下面的程序中,我可以使用关闭按钮关闭窗口,但既不能使用“Esc”绑定,也不能使用按钮回调。我被送到了IPython控制台,但窗口仍停留在这里,有一个旋转的轮子!在码头或与水蟒闲置时工作正常。我使用Mac、High Sierra、Anaconda和Spyder的最新版本(IPython 7.1.1、Spyder 3.3.2)。我怀疑斯派德有问题 from tkinter import * class Myapp(object): def __init__(self): s
from tkinter import *
class Myapp(object):
def __init__(self):
self.root = Tk()
self.root.geometry('150x100+1+1')
self.root.title('Root')
self.root.bind('<Escape>', lambda e: self.root.destroy())
self.button = Button(self.root, text='End Program', command=self.end)
self.button.place(x=10, y=45)
self.L = [1,2,3] # result of an omitted computation
def end(self):
self.root.destroy()
app = Myapp()
app.root.mainloop()
print(app.L)
从tkinter导入*
类Myapp(对象):
定义初始化(自):
self.root=Tk()
self.root.geometry('150x100+1+1')
self.root.title('root'))
self.root.bind(“”,lambda e:self.root.destroy())
self.button=button(self.root,text='End Program',command=self.End)
自身按钮位置(x=10,y=45)
self.L=[1,2,3]#省略计算的结果
def端(自身):
self.root.destroy()
app=Myapp()
app.root.mainloop()
印刷品(附录一)
有什么提示吗?谢谢。(此处为Spyder maintainer)您有两个选项可以让代码在Spyder中工作:
工具>首选项>IPython控制台>图形
并停用名为“激活支持”的选项。然后在运行代码之后,它会阻塞控制台,但不会有任何其他问题Tk
作为后端
工具>首选项>IPython控制台>图形
然后您需要从代码中删除app.root.mainloop()
,因为使用我们的首选项会创建一个Tk事件循环,这样您的代码就不会阻塞控制台,这使得app.root.mainloop()
变得不必要不,我很抱歉,但在家里,这些解决方案都不起作用。解决方案1工作了一次,但之后不再工作,即使在重新启动Spyder时也是如此。解决方案2不显示窗口并立即打印[1,2,3],而且我的代码应该在“任何地方”运行,不是吗?我应该补充一点,这是一个在web上找到的测试代码,它在IDLE、PyCharm、Atom、Terminal中运行。。。这是一本即将出版的书…也许是我写的。有人用Mac High Sierra、Anaconda Python和Spyder的最新版本试过吗?