ラベルを使用して簡易的な秒数をカウントするプログラムを作成しています。
1のボタンを押下すると、カウントが開始されて、2のボタンを押すとカウントが終了されて
初期のラベルの状態に戻したいのですが、カウントがとまりません。
どなたか、対処方法をご教授ください。
# -*- coding: utf-8 -*- import tkinter import tkinter as tk import tkinter.font as font from enum import Enum,auto import multiprocessing as mp import time import threading class WindowType(Enum): itiran=auto() kaiseki=auto() mente=auto() toroku=auto() class menu(tkinter.Frame): def __init__(self,master): super().__init__(master) self.pack() self.master.geometry("800x480") self.master.title("メニュー画面") self.create_widgets() def click1(self): thread = threading.Thread(target=self.changeLabelText) thread.start() def click2(self): #2のボタン押下 def create_widgets(self): # Button font1 = font.Font(size=12) menu_btn1 = tkinter.Button(text='1', bg="#e6e6fa", font=font1, height=11, width=25,command=self.click1) menu_btn1.place(x=30, y=30) menu_btn2 = tkinter.Button(text='2', bg="#e6e6fa", font=font1, height=11, width=25,command=self.click2) menu_btn2.place(x=330, y=30) self.master.label = tk.Label(self.master) self.master.label["font"] = ("Helvetica", 50) self.master.label["bg"] = "green" self.master.label["fg"] = "white" self.master.label.place(x=30, y=250) def changeLabelText(self): i = 0 while True: i += 1 self.master.label["text"] = i time.sleep(1) def main(): root = tk.Tk() app = menu(master=root) app.mainloop() if __name__ == "__main__": main()
#追記 while文 フラグ変数版
# -*- coding: utf-8 -*- import tkinter import tkinter as tk import tkinter.font as font from enum import Enum,auto import time import threading flag = True class WindowType(Enum): itiran=auto() kaiseki=auto() mente=auto() toroku=auto() class menu(tkinter.Frame): def __init__(self,master): super().__init__(master) self.pack() self.master.geometry("800x480") self.master.title("メニュー画面") self.create_widgets() def click1(self): thread = threading.Thread(target=self.changeLabelText) thread.start() def click2(self): flag = False print('aaa',flag) def create_widgets(self): # Button font1 = font.Font(size=12) menu_btn1 = tkinter.Button(text='1', bg="#e6e6fa", font=font1, height=11, width=25,command=self.click1) menu_btn1.place(x=30, y=30) menu_btn2 = tkinter.Button(text='2', bg="#e6e6fa", font=font1, height=11, width=25,command=self.click2) menu_btn2.place(x=330, y=30) self.master.label = tk.Label(self.master) self.master.label["font"] = ("Helvetica", 50) self.master.label["bg"] = "green" self.master.label["fg"] = "white" self.master.label.place(x=30, y=250) def changeLabelText(self): i = 0 while flag is True: i += 1 self.master.label["text"] = i time.sleep(1) if flag is False: break def main(): root = tk.Tk() app = menu(master=root) app.mainloop() if __name__ == "__main__": main()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。