回答編集履歴

1

質問を受けて追記

2023/03/30 07:06

投稿

TakaiY
TakaiY

スコア12765

test CHANGED
@@ -22,5 +22,52 @@
22
22
  ```python
23
23
  if func0 == 'ra':
24
24
  ```
25
+ ---
26
+ 追記
27
+
28
+ ```python
29
+ def get_input(event):
30
+ global entry_text
31
+ entry_text.set(entry.get()) …
32
+
33
+ entry.bind("<Return>", get_input)
34
+ ```
35
+
36
+ これで、何をしようとしているのですか? 変数が何を表わしているか混乱していますか?
37
+
38
+ entry は 作成したEntryのインスタンスが入っています。
39
+ entry_text は、そのEntryの内容を保持している、StringVarのインスタンスです。
40
+ entry.get() とすると、通常はEntryに書かれている文字列が取得できますが、このコードの場合、それを StringVarに設定していますよね。 ということは、同じものを同じところに入れようとしているということになります。
41
+ このコードでは、Entryに入っている値はentry_text.get()で取得するのが正しい方法です。
42
+
43
+ ようするに、質問の「入力された値を取得したい」というのは、entry_text.get() で実現できるということです。
44
+
45
+ 質問が、取得した値を確認するにはどうしたらいいか、ということであれば、
46
+ ```python
47
+ def get_input(event):
48
+ global entry_text
49
+ print(entry_text.get())
50
+
51
+ entry.bind("<Return>", get_input)
52
+ ```
53
+ とすれば、 リターンを押したときに、コンソールに出力されますし、
54
+ ```python
55
+ def get_input(event):
56
+ global entry_text
57
+ tex.insert(0., f'エントリの文字列: {entri_text.get()}')
58
+ ```
59
+ などとすれば、テキストエリアに挿入されるでしょう。
60
+
61
+ ---
62
+ > 問題は print(entry_text.get())をroot0.mainloop()の後に書かないといけないことと、 ウィンドウを閉じないとprintで出力してくれないことですが、そういうものなんでしょうか?
63
+
64
+ GUIのプログラムは、1. GUIの部品や動作を定義する 2. イベントループを回す 3.プログラム終了後の後始末 の3段階で動作します。
65
+ 画面が表示された後の通常状態ではずっとイベントループを回っています。
66
+ なので、通常の動作時の状態を表示させたり動かしたりする場合にはすべてイベントの中に入れなければなりません。
67
+ イベントループの後に書いたものは、終了後の後始末として動作するので、質問の動作になります。
68
+
69
+ イベントの中で表示させる方法は先に書きましたね。
25
70
 
26
71
 
72
+ entry.bind("<Return>", get_input) としたら、 entry_text.get() という変数に値が格納されていました。 問題は print(entry_text.get())をroot0.mainloop()の後に書かないといけないことと、 ウィンドウを閉じないとprintで出力してくれないことですが、そういうものなんでしょうか?
73
+