回答編集履歴

3

ソースコードの変更

2023/03/07 04:48

投稿

person
person

スコア223

test CHANGED
@@ -1,9 +1,8 @@
1
- 質問に記述した
2
- > 文字を入れてから一定時間後に表示やクリアなど目に見える処理
1
+ 2023/03/07 変更
2
+
3
- は次のようにすることで実現できました。
3
+ 下記で実現できました。
4
- そのため一旦は解決としますが、問題あればご指摘ください。
5
- コードものは回答者様方は異なりますが、trace()使点は同じす。大変参考なりました
4
+ QRコードにカンマが含まれていれば、カンマ区切り1番目2番目ラベルに表示。そうでなければラベル空白のみ表示
6
- ありがとうござい
5
+ エントリのクリアはtk.StringVar().set(""), tk.Entry().delete()のどちらでも問題ありませんでした
7
6
 
8
7
  ```Python
9
8
  import tkinter as tk
@@ -12,22 +11,24 @@
12
11
  def func():
13
12
  qr = qr_sv.get()
14
13
 
15
- if qr.count(",") == 1:
14
+ if qr.count(",") >= 1:
16
15
  values = qr.split(",")
17
16
  id_label["text"] = values[0]
18
17
  name_label["text"] = values[1]
18
+ else:
19
+ id_label["text"] = ""
20
+ name_label["text"] = ""
19
21
 
20
- # クリア
21
- # 注意点:qr_sv.set("") とすると、永久的にqr_changed()が呼ばれ続けるためdelete()を使ってクリア
22
- qr_entry.delete(0, "end")
22
+ qr_sv.set("")
23
-
23
+
24
24
 
25
25
  def qr_changed(*args):
26
26
  global after_id
27
27
  # 入力中は呼ばずに、入力が完了したらfunc呼び出し
28
28
  if after_id:
29
29
  qr_entry.after_cancel(after_id)
30
+ if qr_sv.get():
30
- after_id = qr_entry.after(1000, func) # 入力後約1000ミリ秒経過したら入力完了とみなす
31
+ after_id = qr_entry.after(1000, func) # 入力後約1000ミリ秒経過したら入力完了とみなす
31
32
 
32
33
  root = tk.Tk()
33
34
 

2

追記

2022/06/15 01:54

投稿

person
person

スコア223

test CHANGED
@@ -27,7 +27,7 @@
27
27
  # 入力中は呼ばずに、入力が完了したらfunc呼び出し
28
28
  if after_id:
29
29
  qr_entry.after_cancel(after_id)
30
- after_id = qr_entry.after(1000, func)
30
+ after_id = qr_entry.after(1000, func) # 入力後約1000ミリ秒経過したら入力完了とみなす
31
31
 
32
32
  root = tk.Tk()
33
33
 

1

追記

2022/06/15 01:40

投稿

person
person

スコア223

test CHANGED
@@ -18,6 +18,7 @@
18
18
  name_label["text"] = values[1]
19
19
 
20
20
  # クリア
21
+ # 注意点:qr_sv.set("") とすると、永久的にqr_changed()が呼ばれ続けるためdelete()を使ってクリア
21
22
  qr_entry.delete(0, "end")
22
23
 
23
24