別の python ファイルからさまざまなスクリプトを実行する単純な GUI があります。GUI が while ループを含む関数を実行するまで、すべて正常に動作し、その時点で GUI がクラッシュして非アクティブになるようです。これはGUIの更新に関係していると思うので、これをどのように克服できるかについて誰かアイデアを持っていますか?ありがとう。以下は私のGUIの簡略版です。
GUI
#!/usr/bin/env python
# Python 3
from tkinter import *
from tkinter import ttk
from Entry import ConstrainedEntry
import tkinter.messagebox
import functions
AlarmCode = "2222"
root = Tk()
root.title("Simple Interface")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
ttk.Button(mainframe, width=12,text="ButtonTest",
command=lambda: functions.test()).grid(
column=5, row=5, sticky=SE)
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
root.mainloop()
機能
def test():
period = 0
while True:
if (period) <=100:
time.sleep(1)
period +=1
print(period)
else:
print("100 seconds has passed")
break
上記で何が起こるかというと、ループが実行されているときにアプリケーションがクラッシュします。ピリオドが経過した後にelseステートメントにブレークを挿入すると、すべて正常に動作します。この GUI はさまざまな機能を実行するため、ユーザーがループ中にクリックできるようにしたいと考えています。