python-tk:如何调用它只是为了显示一些东西,然后返回主程序?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-tk:如何调用它只是为了显示一些东西,然后返回主程序?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1706字,纯文字阅读大概需要3分钟。
内容图文
很抱歉这个菜鸟问题,但我真的不明白.
我正在使用python / tkinter,我想显示一些内容(例如,上面有一些形状的画布),并保持显示状态,直到程序退出为止.我了解在调用tkinter.tk.mainloop()之前不会显示任何小部件.但是,如果我调用tkinter.tk.mainloop(),则在用户关闭主窗口之前,我将无能为力.
我不需要监视任何用户输入事件,只需显示一些内容即可.在不放弃对mainloop的控制的情况下,这样做的好方法是什么?
编辑:
此示例代码是否合理:
class App(tk.Tk):
def __init__(self, sim):
self.sim = sim # link to the simulation instance
self.loop()
def loop():
self.redraw() # update all the GUI to reflect new simulation state
sim.next_step() # advance simulation another step
self.after(0, self.loop)
def redraw():
# get whatever we need from self.sim, and put it on the screen
EDIT2(添加after_idle):
class App(tk.Tk):
def __init__(self, sim):
self.sim = sim # link to the simulation instance
self.after_idle(self.preloop)
def preloop():
self.after(0, self.loop)
def loop():
self.redraw() # update all the GUI to reflect new simulation state
sim.next_step() # advance simulation another step
self.after_idle(self.preloop)
def redraw():
# get whatever we need from self.sim, and put it on the screen
解决方法:
Tk需要一个事件循环,这是不可避免的.例如,这就是小部件知道如何在被遮挡时重绘自身的方式.因此,您必须运行事件循环.
您至少有三个选择.首先,将主线程用于GUI,并将其他逻辑放在单独的线程中.第二种选择是使用两个单独的过程-一个用于GUI,一个用于程序.您的程序可以通过套接字与GUI通信,以将其发送给显示的数据.
您的第三个选择是学习生活在事件循环中.毕竟,包裹整个程序真的只有一会儿True.如果您的主要逻辑循环运行,只需取出循环并用事件循环替换即可.例如,您可以运行代码的一次迭代,然后调用它以计划自己在几毫秒内再次运行.对after的调用添加了一个事件,该事件将在GUI进行任何必要的维护时调用您的代码.
内容总结
以上是互联网集市为您收集整理的python-tk:如何调用它只是为了显示一些东西,然后返回主程序?全部内容,希望文章能够帮你解决python-tk:如何调用它只是为了显示一些东西,然后返回主程序?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。