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

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

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

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

Q&A

0回答

542閲覧

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

gaki_1969

総合スコア0

Python

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

0グッド

0クリップ

投稿2023/03/19 02:39

チャットアプリのプログラミングしています。
pythonのtkinterで応答なしが発生してしまい
教えて頂きたいです。

前提

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

TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

python

サーバー側
import socket
import tkinter as tk

host1 = '127.0.0.1'#IPアドレスの設定
#"127.0.0.1"は"localhost"と同じ意味で扱われ、自分のPC内のみの通信となります。
port1 = 8769#ポートの設定
#オブジェクト作成
socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#AF_INET:IPv4指定 SOCK_STREAM:TCPプロトコル指定
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データ受信サイズ

#if recvline == 'bye': #受信データがbyeなら繰り返しを強制終了 #break try: #num = int(recvline)#受信データをs格納 counter = int(recvline) #print(counter) #if num % 2 == 0:#条件分岐:%2 偶数の時、余りが"0" sendline = '入力して下さい。'.encode('utf-8')#'OKです' #else:#奇数の時 #sendline = 'NGです'.encode('utf-8') connection.send(sendline) label.config(text=str(counter)) label.after(1000,count) except ValueError as e: # 送信用の文字を送信 #sendline = '数値を入力して下さい'.encode('utf-8')#UTF-8に変換して受信する #connection.send(sendline) #finally: #print('クライアントで入力された文字=' + str(recvline)) 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()

クライアント側
import socket
import tkinter as tk

host1 = '127.0.0.1'#IPアドレスの設定
#"127.0.0.1"は"localhost"と同じ意味で扱われ、自分のPC内のみの通信となります。
port1 = 8769#ポートの設定
#オブジェクト作成
socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#AF_INET:IPv4指定 SOCK_STREAM:TCPプロトコル指定
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データ受信サイズ

#if recvline == 'bye': #受信データがbyeなら繰り返しを強制終了 #break try: #num = int(recvline)#受信データをs格納 counter = int(recvline) #print(counter) #if num % 2 == 0:#条件分岐:%2 偶数の時、余りが"0" sendline = '入力して下さい。'.encode('utf-8')#'OKです' #else:#奇数の時 #sendline = 'NGです'.encode('utf-8') connection.send(sendline) label.config(text=str(counter)) label.after(1000,count) except ValueError as e: # 送信用の文字を送信 #sendline = '数値を入力して下さい'.encode('utf-8')#UTF-8に変換して受信する #connection.send(sendline) #finally: #print('クライアントで入力された文字=' + str(recvline)) 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()

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

y_waiwai

2023/03/19 05:19

このままではコードが読めないので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問