gpt4 book ai didi

python - 哪些 GUI 框架最适合多线程 Python 程序?

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:23 25 4
gpt4 key购买 nike

我正在编写一个带有 GUI 的多线程 Python 程序,其中有几个模块通过更改文本和背景颜色来“触摸”GUI。我目前正在使用 PyGTK,我发现 GUI 有时会“无声地”崩溃(没有错误消息;程序只是终止),有时会遇到段错误。

This site注意 GTK 不是完全线程安全的,并且 PyGTK 多线程编程很棘手。对于不太可能产生问题的多线程程序,是否有更好的 Python GUI 框架?

最佳答案

哦,我绝对推荐PyQt4 .起初,我没有得到所有这些 SIGNALEMIT 废话,但现在我用它做了一个程序,QThread模块非常有用。

至于稳定性,我从来没有发生过崩溃。即使在调试半功能代码时,QT 也没有任何问题。每当我单击带有无效信号槽的按钮时,它只会向控制台窗口抛出一个错误。

另一方面,GTK 只是“偶尔出现一次,没有任何错误”。只是您描述性极强且友好的 Segmentation Fault。这是我发现使用 PyQt 很愉快的原因之一。当您遇到错误时,您实际上知道哪里出了问题。

我很确定这是个人喜好,但还有一个优点是 Mac、Linux 和 Windows 上的原生 GUI。 Windows 上的 GTK+(不要误会我的意思。我使用的是 Ubuntu)只是有这种 X-org 的感觉,这让我感到不安。

祝你好运!


为了使 PyQt 更具吸引力,这里摘录了我的图书装订应用程序(有点乱):

class Binder(QtCore.QThread):
'''
Class for binding the actual book
'''

def __init__(self, parent = None):
super(Binder, self).__init__(parent)



def initialize(self, pages, options, outfile):
self.pages = pages
self.options = options
self.outFile = outfile

self.book = organizer.Book()
self.enc = Encoder(self.options)
self.ocr = ocr.OCR(self.options)

self.connect(self.enc, QtCore.SIGNAL('updateProgress(int, int)'), self.updateProgress)



def updateProgress(self, percent, item):
self.emit(QtCore.SIGNAL('updateProgress(int, QString)'), int(percent), 'Binding the book...')
self.emit(QtCore.SIGNAL('updateBackground(int, QColor)'), int(item), QtGui.QColor(170, 255, 170, 120))

if int(percent) == 100:
time.sleep(0.5)
self.emit(QtCore.SIGNAL('finishedBinding'))



def run(self):
self.die = False

for page in self.pages:
self.add_file(page, 'page')

if not self.die:
self.analyze()

if not self.die:
self.book.get_dpi()

if self.options['ocr'] and not self.die:
self.get_ocr()

if not self.die:
self.enc.initialize(self.book, self.outFile)
self.enc.start()

关于python - 哪些 GUI 框架最适合多线程 Python 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4833768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com