- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 wxPython 比较陌生(但不是 Python 本身),所以如果我在这里遗漏了一些东西,请原谅我。
我正在编写一个 GUI 应用程序,它在非常基本的级别上由启动和停止线程的“启动”和“停止”按钮组成。这个线程是一个无限循环,只有当线程停止时才会结束。该循环生成消息,目前仅使用 print
输出。
GUI 类和无限循环(使用threading.Thread
作为子类)保存在单独的文件中。让线程将更新推送到 GUI 中的 TextCtrl
等内容的最佳方法是什么?我一直在尝试使用 PostEvent
和 Queue
,但运气不佳。
这是一些基本代码,为了保持简洁而删除了部分代码:
main_frame.py
import wx
from loop import Loop
class MainFrame(wx.Frame):
def __init__(self, parent, title):
# Initialise and show GUI
# Add two buttons, btnStart and btnStop
# Bind the two buttons to the following two methods
self.threads = []
def onStart(self):
x = Loop()
x.start()
self.threads.append(x)
def onStop(self):
for t in self.threads:
t.stop()
循环.py
class Loop(threading.Thread):
def __init__(self):
self._stop = threading.Event()
def run(self):
while not self._stop.isSet():
print datetime.date.today()
def stop(self):
self._stop.set()
我曾经一度通过使用 wx.lib.newevent.NewEvent()
和 these lines 将类放在同一个文件中来使其工作。 。如果有人能指出我正确的方向,我将不胜感激。
最佳答案
最简单的解决方案是使用 wx.CallAfter
wx.CallAfter(text_control.SetValue, "some_text")
您可以从任何线程调用 CallAfter
,并且您传递给它的要调用的函数将从主线程调用。
关于python - 模块之间的 wxPython、Threads 和 PostEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2544339/
我正在使用 QCoreApplication::postEvent 发布从 QEvent 继承的自定义事件。我读到过,在使用 postEvent 时,必须有堆分配事件。但我不确定谁负责释放它。 因此,
我已经编写了这个简单的 QT 主窗口,只有当我将 QString 参数传递给 QKeyEvent 时,它才会打印 key ,我希望即使没有 QString 参数也能打印 key ? 下面代码中的第 1
我对 wxPython 比较陌生(但不是 Python 本身),所以如果我在这里遗漏了一些东西,请原谅我。 我正在编写一个 GUI 应用程序,它在非常基本的级别上由启动和停止线程的“启动”和“停止”按
我有一个 QT C++ 应用程序,它有多个线程在运行,线程使用 QCoreApplication::postEvent 机制相互传递信息。 QCoreApplication::postEvent 文档
我正在将通过网络传入的键盘和鼠标事件注入(inject)到我的 Qt 应用程序中,并为此使用 QCoreApplication::postEvent。鼠标坐标是绝对屏幕像素坐标。 QMouseEven
我正在尝试使用以下代码在 Swing 中模拟点击事件: event = new MouseEvent(target, MouseEvent.MOUSE_PRESSED, ...) java.awt.T
我是一名优秀的程序员,十分优秀!