私はTkinterを学んでいて、以下を使用してグローバル変数を設定しようとしていますEntry
。
def initial_user_name_set():
global user_name
initial_greeting_label()
user_name = Entry(root)
user_name.pack()
user_name_enter_button()
Entry
値に応じて一意の出力を持つラベルを作成できるようにします(user_name_enter_button
関数はtime_based_greeting
、押されたときに関数を呼び出す単なるボタンです。
def time_based_greeting():
user_name.get()
if currentTime.hour < 12:
morning_greeting_label()
elif 12 <= currentTime.hour < 18:
afternoon_greeting_label()
else:
evening_greeting_label()
print(user_name)
あいさつラベルの例:
def evening_greeting_label():
evening_greeting = Label(root, text="Good evening, " + user_name.get() + ".")
evening_greeting.pack()
今、これだけで完全にうまく機能します。名前を"Joe"
;として入力する場合 その後、ラベルは"Good evening, Joe."
ただし、後で変数を試してみるとprint
、user_name
の".!entry"
代わりに、単に端末に出力され"Joe"
ます。
私はなぜこれが起こっているのかについて完全に混乱しています、そしてどんな助けでも大いに感謝されます。
また、質問のレイアウトを改善できるかどうか教えてください。ありがとうございます。
その非常に明白、user_name
あるEntry
オブジェクト。Entry
変数の名前でクラスをインスタンス化するuser_name
のでuser_name.get()
、エントリウィジェット内で入力した内容を返すなど、さまざまなメソッドを使用できます。user_name
単独で印刷すると、'.!entry'
それがオブジェクトでuser_name
あるEntry
ことを参照していることがわかります。おそらく、クラスのオブジェクトを識別するtkintersの方法と呼んでください。試してみるprint(evening_greeting)
と、ウィジェットの注文数は'.!labeln'
どこにあり、メインルートウィンドウはどこにあるかのようになります。n
.
TL; DR:user_name
はEntry
オブジェクトであり、エントリウィジェット内に入力された値を返すuser_name.get()
オブジェクトのメソッドですuser_name
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加