Tkinter GUIから値を受け取って別のコンピュータにソケットから送信する目的のプログラムを作成しました。TkinterとSocketを並行して使用する方法
問題は、Tkinterがすべてのループをホッグすることです。私はroot.after()を使ってみましたが、ソケットのものは.get()関数に依存していますので、GUIがまだ出現していないので呼び出されたときに、送信しようとしているものの値はありません。ここで
は、どのように私はループの中で、これがすべて実行されていない
HOST= 'ip address'
PORT = 8000
s= socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1) #I'm aiming for this to eventually be 24.
conn, addr = s.accept
def data():
Value = str(value.get())
conn.sendall(str(Value))
root = Tk()
value = Scale(root, from_=255, to=0)
value.set(60)
value.pack() #not using pack but grid. Pack is just easier for simple example.
root.after(500, data())
root.mainloop()
(私は、よく、約10の異なる変数が大きくはるかに大きい)私は何をしようとしているのがより簡単なコード例ですか?変更が行われたときにデータを送信しますか? (うまくいけば毎秒、私が目指しているものです)。私はroot.mainloopの前にroot.afterを持っている問題を理解していますが、そうでない場合は動作しません。とにかく、他の方法では動作しません。
私はスレッドとキューが唯一の解決策かもしれないと思っていますが、私はいつもそれらのモジュールで苦労しています。
GUIスライドの変更に合わせて常に両方のプログラムコンポーネントをループして常にデータを送信する必要があります。
[あなた自身のコードをTkinterのイベントループとともにどのように実行しますか?](http://stackoverflow.com/questions/459083/how-do-you-run-your-own-code-alongside-tkinters -event-loop) – msw
うまく表示されます。重複する質問から欠落しているビットは、 'data()'が関数終了時に自身を再スケジュールすることです。 – msw
もう片方がtkinterを使用してから残りのプログラムのためにそれを抜け出すので、重複はありません。私は実際にそこから関数を得ました。私は絶えず更新が必要です。 –