Pythonでソケットリッスンするアプリケーションを作っています。私はcanonicalでQuicklyを使用しました(gi.repositoryでgladeを使用してguiを作成します)。しかし、とにかくリスニング機能へのスレッドを作成できません。thread クラスと threading.Thread クラスでも多くの方法を試しました。私はQuicklyとスレッドがまったく初めてです。私はインターネットですべてを試しました:-)しかし、解決策が見つかりません。thread.start() を使用すると、GUI が閉じるまで待機します。thread.run() を使用すると、GUI から抜け出し、すぐに関数を実行して、GUI が応答しなくなります。以下は、スレッドクラスに使用したサンプルコードです。これはオープン ソース プロジェクトであるため、必要に応じてファイル全体をアップロードできます。私を助けてください。
def listen(self):
print "working"
#listen to any incoming connections
#self.control_sock_in.listen(1)
i=0
while True:
print "it works"
#conn,addr = self.control_sock_in.accept()
#data = conn.recv
#if there is any incoming connection then check for free slot and reply with that free slot
#if change of status message then update nodelist
def on_btn_create_n_clicked(self, widget):
self.btn_quit_n.set_sensitive(True)
self.btn_join_n.set_sensitive(False)
self.btn_create_n.set_sensitive(False)
subprocess.check_call(["sudo", "ifconfig", "wlan0", "192.168.0.5", "netmask", "255.255.255.0", "broadcast", "192.168.0.255"])
self.control_sock_in = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.control_sock_in.bind(('192.168.0.5', 6000))
self.status_lbl.set_text("Created the network successfully with IP of 192.168.0.5!")
self.nodelist['192.168.0.5'] = ('6000','0')
#start thread on listen()
thread.start_new_thread(self.listen,(self,))
self.btn_camera.set_sensitive(True)
self.btn_mixer.set_sensitive(True)
self.btn_display.set_sensitive(True)
ところで、コメントされたアイテムの不足しているコードを提供する必要はありません。私はそれらを行うことができます。私が立ち往生しているのは、スレッドの問題です。