【问题标题】:Tkinter quit() freezes windowTkinter quit() 冻结窗口
【发布时间】:2018-10-31 08:26:16
【问题描述】:

我得到了一个代码,它在 Tkinter(根,Tk 对象)中创建了一个隐藏的主窗口,而不是一个顶级窗口。我使用after()mainloop() 传递给其余代码,但窗口只是冻结了。我不想破坏应用程序,只是为了运行其余代码。

我将 after 中的毫秒数设置为 10,000,并注意到仅在 10 秒后,当它打印 After mainloop 时,窗口就会冻结/。

有人知道为什么吗?我可以做些什么来让它发挥作用?

root = Tk()
top = Toplevel()

top.after(10000, top.quit)
top.mainloop()
print 'After mainloop'

非常感谢

【问题讨论】:

  • “冻结”是什么意思?你怎么知道,因为你在主窗口中没有任何小部件?此外,在顶层窗口调用mainloop 也没有任何意义。您应该在 tkinter 程序中只调用一次 mainloop
  • 冻结是指我不能再移动它,甚至不能尝试关闭它,而且当我放置小部件对其进行测试时,它们没有反应。但是我找到了一种通过线程调用 mainloop() 来克服这个障碍的方法,所以我的程序正在运行。感谢所有试图提供帮助的人。
  • 这个五行小程序绝对不需要线程。你确定这个确切的代码会冻结在你身上吗?
  • 这个确切的代码冻结了,但我计划将它开发成比 5 行更大、更复杂的东西。这只是为了理解并使我的问题易于理解
  • 你是如何运行代码的?从命令行使用python the_program.py,或者您是否使用其他方式运行代码?

标签: python-2.7 user-interface tkinter graphics


【解决方案1】:

任何人都很难使用您发布的内容进行调试,我建议您使用top.iconify() 而不是隐藏应用程序。假设chat 是窗口。

【讨论】:

  • 我不想关闭应用程序,只是为了跳转到 mainloop() 之后的代码
  • 试试iconify看看。
  • 我写错了,写的是聊天而不是顶部。我不明白,我应该在哪里使用 iconify?
  • 把它换到你有chat.quit的地方
  • 当我这样做时,它会变成一个小图标但停留在 mainloop() 中而没有到达以下代码行
猜你喜欢
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多