質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

266閲覧

pythonチャットアプリでGUI画面で応答なしになります。

gaki1969

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/03/20 10:36

実現したいこと

pythonチャットアプリでGUI画面でカウント表示したい

前提

チャットアプリのプログラミングしています。
pythonのtkinterで応答なしが発生してしまい
教えて頂きたいです。
プログラミング言語はpythonです。
1つのパソコンでアプリ間でチャットをしたいと思っています。
jupyterlabがクライアント
spyderがサーバーで
クライアントから数値をサーバーにソケット通信で
送ります。
サーバー側が入力数値からtkinterで数値の表示をします。
数値の入力がクライアントから無い状態があると
数値表示画面が応答なしになります。
after関数を使って数値表示しています。
マルチスレッドなど方法があると思います。
プログラミングが分からないので
ご教授お願いします。

該当のソースコード

python

コード # ソケット通信(サーバー側) import socket import tkinter as tk host1 = '127.0.0.1'#IPアドレスの設定 port1 = 8770#ポートの設定 #オブジェクト作成 socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket1.bind((host1, port1)) socket1.listen(1) print('クライアントからの入力待ち状態') # コネクションとアドレスを取得 connection, address = socket1.accept() print('接続したクライアント情報:' + str(address)) # 無限ループ byeの入力でループを抜ける recvline = '' sendline = '' #num = 0 counter = 0 #while True:#ループ def recv_time(label): def count(): global counter # クライアントからデータを受信 recvline = connection.recv(4096).decode()#4096データ受信サイズ try: counter = int(recvline) #print(counter) sendline = '入力して下さい。'.encode('utf-8')#'OKです' connection.send(sendline) label.config(text=str(counter)) label.after(1000,count) except ValueError as e: print(str(count)) count() root=tk.Tk() root.title("soket_count") root.geometry("300x300") label=tk.Label(root,width=3,font=("",30),bg="white",relief="groove",bd=1) recv_time(label) label.place(x=120,y=120) root.mainloop() #クライアント側 # coding: utf-8 # ソケット通信(クライアント側) import socket ip1 = '127.0.0.1'#IPアドレスの設定 port1 = 8770#ポートの設定8765 server1 = (ip1, port1) socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#AF_INET:IPv4指定 SOCK_STREAM:TCPプロトコル指定 socket1.connect(server1)#server接続 line = '' while line != 'bye': line = input('>>>') # サーバに送信 socket1.send(line.encode("UTF-8")) # サーバから受信 data1 = socket1.recv(4096).decode()#4096データ送信サイズ # サーバから受信したデータを出力 print('サーバーから: ' + str(data1)) #print('サーバーからの回答: ' + str(data1)) socket1.close() #print('クライアント側) ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問