PythonとTkinterをつかい、GUIアプリケーションを作っています。
下記コードを約1時間以上実行し続けたとき、おかしな位置(画面左上)に時刻表示やその他オブジェクトがすべてずれ、一切の入力を受け付けなくなった後、仕方なくソフトを閉じようとすると「動作を停止しました」と表示されソフトが落ちてしまいます。
原因と改善点を知りたいです。
#追記
VisualStudioCodeのターミナルに「Failed to create the menu window」と表示され、処理が止まり表示がバグっています。表示がおかしくなるだけで時計自体は動いている(ラベルは更新され続けている)状態です。
#コード
Python
1 2from os import access 3import tkinter 4from tkinter import ttk 5from tkinter import filedialog 6from tkinter import messagebox 7import sys 8import tkinter.font 9import datetime 10import time 11import threading 12import pyglet,tkinter 13import json 14pyglet.font.add_file('Fonts\SoukouMincho.ttf') 15pyglet.font.add_file('Fonts\DSEG7Classic-Bold.ttf') 16import configparser 17 18def get_time(): 19 20 while True: 21 22 now = datetime.datetime.now() 23 24 25 tm = "{:02}".format(now.hour) 26 tm2 = "{:02}".format(now.minute) 27 global programpt 28 json_open = open( programpt , 'r') 29 json_load = json.load(json_open) 30 now = datetime.datetime.now() 31 tmall = ("{:02}""{:02}").format(now.hour,now.minute) 32 a =json_load["Program"]["Etimet"+str(nm3)] 33 b =json_load["Program"]["Etimeo"+str(nm3)] 34 ab = (a)+(b) 35 timedelta = int(tmall) - int(ab) 36 37 if timedelta > 0: 38 delay_label = ttk.Label(delay_frm, text="遅延あり" ,font=("SoukouMincho", "80",) ,foreground="red" ,background="#000000") 39 else: 40 delay_label = ttk.Label(delay_frm, text="遅延なし" ,font=("SoukouMincho", "80",) ,foreground="green" ,background="#000000") 41 42 delay_label.grid(column=0, row=0,sticky=tkinter.W,) 43 44 45 46 time_label = ttk.Label(time_frm, text=tm + ":" + tm2, font=("DSEG7 Classic",200) ,foreground="orange2",background="#000000") 47 time_label.grid(column=0, row=1,sticky=tkinter.SW,pady=10) 48 time2_label = ttk.Label(time_frm, text="現在時刻", font=("SoukouMincho",40,) ,foreground="orange2",background="#000000") 49 time2_label.grid(column=0, row=0 ,sticky=tkinter.W , pady=10) 50 51 52 time.sleep(1) 53 54main_win = tkinter.Tk() 55main_win.title("メインウインドウ") 56main_win.attributes('-fullscreen', True) 57main_win.configure(bg='#000000') 58 59 60ttk.Style().configure("TP.TFrame", background="brack") 61 62main_frm = ttk.Frame(main_win ,width=1480, height=2000,style="TP.TFrame") 63main_frm.grid(column=0,row=0, sticky=tkinter.NS, padx=10, pady=10) 64 65time_frm = ttk.Frame(main_frm,width=1480, height=400,style="TP.TFrame") 66time_frm.grid(column=0,row=1, rowspan=2, sticky=tkinter.W, padx=0, pady=0 ,columnspan=5) 67time_frm.grid_propagate(0) 68 69delay_frm = ttk.Frame(main2_frm, width=450, height=200 ,style="TP.TFrame") 70delay_frm.grid(column=0,row=1, padx=10, pady=10) 71delay_frm.grid_propagate(0)