• 締切済み

Pythonコードの間違いを指摘して

import tkinter as tk i=0 def a(): global i i=1 root=tk.TK() root.geometry("100x100") a() label=tk.Label(root,text=i) label.grid() tk.mainloop() →できた import tkinter as tk i=0 def a(): global i i=1 root=tk.TK() root.geometry("100x100") label=tk.Label(root,text=i) label.grid() button=tk.Button(root,text="button",command=a) button.grid() tk.mainloop() →できない(0と表示される)

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.2

label=tk.Label(root,text=i)の直前にprint(i)を追加して、iの値を確認してみてください。iの値が0のときにlabel=tk.Label(root,text=i)を実行したら、ラベルの文字列として"0"が表示されるのは当然です。 もしかして、tk.Label(root,text=i)を一度実行したら、その後iの値が変化したときにラベルの文字列も連動して自動的に変化すると思っているでしょうか。tk.Label(root,text=i)にそのような機能はありません。

回答No.1

tk.TK() をtk.Tk()に置き換えてください。 あと、tk.Tk() のインスタンスを root として作成した後、root.mainloop() を呼び出してイベントループを開始したら良いかと。 変更後⤵︎ ︎ import tkinter as tk i = 0 def a(): global i i = 1 root = tk.Tk() root.geometry("100x100") label = tk.Label(root, text=i) label.grid() button = tk.Button(root, text="button", command=a) button.grid() root.mainloop()

関連するQ&A