作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 PySide 和这个 IRC 库(https://bitbucket.org/jaraco/irc)在 Python 中制作一个 GUI IRC 客户端。 PySide 有一个主循环来处理 GUI 事件。 IRC 库还有一个循环来处理 IRC 事件。两个循环都在调用后阻塞。我应该怎么办?它只是在不同的线程中运行它们吗?
最佳答案
IRC
客户端类通过on_connect
、on_disconnect
和on_schedule
参数支持外部主循环集成。在 PySide 中,您将使用它们分别创建一个 QSocketNotifier
、销毁它并设置一个 QTimer
:
class PySideIRCClient(IRC):
def __init__(self):
self.socket_notifiers = {}
return IRC(self.on_connect, self.on_disconnect, self.on_schedule)
def on_connect(self, socket):
notifier = QtCore.QSocketNotifier(socket, QtCore.QSocketNotifier.Read)
notifier.activated.connect(self.socket_activated)
self.socket_notifiers[socket] = notifier
def socket_activated(self, socket):
self.process_data([socket])
def on_disconnect(self, socket):
self.socket_notifiers[socket].setEnabled(False)
del self.socket_notifiers[socket]
def on_schedule(self, seconds):
QtCore.QTimer.singleShot(seconds * 1000, self.process_timeout)
PySideIRCClient
然后与 PySide Qt 事件循环集成,因此您可以只使用 QtGui.QApplication.exec_()
。
关于python - 如何有两个事件循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907941/
我是一名优秀的程序员,十分优秀!