バックグラウンドでタスクを実行する PySide アプリがありますQThread
。タスクの途中で、ダイアログを介してユーザーからの入力を必要とするステップがある場合があります。QtGui.QinputDialog.getText
ワーカー スレッドからコードを呼び出すことができません。
私はこのようなものを持っています:
class Communicate(QtCore.QObject):
signal = QtCore.Signal((str, str))
def ask_user(title, text):
return QtGui.QInputDialog.getText(None, title, text)
(その後、実際に作業を行う関数で)
def longtask():
dialogneeded = network_io()
if dialogneeded:
x = Communicate()
x.signal.connect(ask_user)
x.signal.emit("A title", "Some text")
more_long_work_to_do()
このスニペットはユーザーが指定した値を見ていないことは理解していますが、少なくともダイアログを表示できるものを取得しようとしています。
これが私が得るエラーです:
[xcb] Extra reply data still left in queue
[xcb] This is most likely caused by a broken X extension library
[xcb] Aborting, sorry about that.
python: xcb_io.c:575: _XReply: Assertion `!xcb_xlib_extra_reply_data_left' failed.
Aborted