シンプルなTwitterクライアントを作ってPyQtと(Q)スレッドを練習しています。Qthreadが2つあります。
メイン/GUIスレッド。
Twitterフェッチスレッド-X分ごとにTwitterからデータをフェッチします。
したがって、X分ごとに、私のTwitterスレッドは新しいステータス更新のセット(Pythonリスト)をダウンロードします。このリストをメイン/GUIスレッドに渡して、これらのステータスでウィンドウを更新できるようにします。
シグナル/スロットシステムを使用して、「ステータス」PythonリストをTwitterスレッドからメイン/GUIスレッドに転送する必要があると想定しています。したがって、私の質問は2つあります。
Twitterスレッドからステータスを送信するにはどうすればよいですか?
メイン/GUIスレッドでそれらを受け取るにはどうすればよいですか?
私が知る限り、PyQtはデフォルトでシグナル/スロットを介してのみPyQtオブジェクトを送信できます。どういうわけか、送信できるカスタムシグナルを登録することになっていると思いますが、私が見つけたこれに関するドキュメントは、私のような初心者には非常に不明確です。PyQtの本を注文していますが、もう1週間で届かないので、それまで待ちたくありません。:-)
UbuntuでPyQt4.6-1を使用しています
アップデート:
これは、機能しないコードからの抜粋です。まず、シグナル( "newStatuses"、作成したばかりの名前)をメイン/GUIスレッドの関数self.update_tweet_listに「接続」しようとします。
QtCore.QObject.connect(self.twit_in,
QtCore.SIGNAL("newStatuses (statuses)"),
self.update_tweet_list)
次に、Twitterスレッドで、次のようにします。
self.emit(SIGNAL("newStatuses (statuses)"), statuses)
この行が呼び出されると、次のメッセージが表示されます。
QObject::connect: Cannot queue arguments of type 'statuses'
(Make sure 'statuses' is registered using qRegisterMetaType().)
qRegisterMetaType()を検索しましたが、Pythonに関連する理解できるものは見つかりませんでした。