ああ、私は間違いなくPyQt4をお勧めします。最初に、私はすべてSIGNAL
とEMIT
ナンセンスを得ていませんでしたが、これでプログラムを作ったので、QThread
モジュールは驚くほど便利です。
安定性に関して、私はこれまでずっとクラッシュしたことはありません。私は半機能コードをデバッグしていましたが、QTには何の問題もありませんでした。それは無効なシグナルスロットを持つボタンをクリックするたびにコンソールウィンドウにエラーを投げただけです。
GTKは、一方では、何も間違いなくまったくスプラッドしています。あなたの非常に記述的でフレンドリーなSegmentation Fault
。それが、私がPyQtがうまく動作することがわかった理由の1つでした。エラーが発生すると、実際に何が間違っているのかが分かります。
私はそれが個人的な好みだと確信していますが、もう1つは、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()
GTKはスレッドセーフではありませんが、それは、あなたは間違いなくGTKを使用して、マルチスレッドコードを書くことができますので、注意してくださいスレッドの。しかし、GTKを使ってマルチスレッドコードを書くことは、GTKを使ってマルチスレッドコードを書こうとすると、実際には難しいかもしれません。 – mouad