1
私は、特定のイベントからの時間をカウントする簡単なGUIアプリケーションを構築しています。とにかく、すべてが正常に動作しますが、私は[終了]ボタンをクリックしたとき、それは例外に私にこのような毎秒与えることを開始します。ここではRuntimeError:メインスレッドはメインループにはありません。終了ボタンをクリックしたとき
Exception in thread Thread-10: Traceback (most recent call last): File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run() File "/usr/lib/python3.5/threading.py", line 1180, in run
self.function(*self.args, **self.kwargs) File "/home/cali/PycharmProjects/str8/str8", line 83, in printit
display() File "/home/cali/PycharmProjects/str8/str8", line 23, in display
font="Verdana 8 bold").grid(row=0, sticky=W) File "/usr/lib/python3.5/tkinter/__init__.py", line 2609, in __init__
Widget.__init__(self, master, 'label', cnf, kw) File "/usr/lib/python3.5/tkinter/__init__.py", line 2142, in __init__
(widgetName, self._w) + extra + self._options(cnf)) RuntimeError: main thread is not in main loop
することは、私がやっていることです:私が使用している
# str8.py
# Program to count time from a certain event
from tkinter import *
from datetime import *
from threading import *
root = Tk()
root.title("STR8")
root.resizable(width=False, height=False)
def main():
printit()
def exit():
root.destroy()
def display():
event, tday, str8, seconds, minutes, hours, days, weeks, years = calculate()
thelabel = Label(root,
text="You have been STR8 for:\n",
font="Verdana 8 bold").grid(row=0, sticky=W)
labelYears = Label(root,
text="Years: "
+ str(round(years, 2)),
font="Verdana 8").grid(row=1, sticky=W)
labelWeeks = Label(root,
text="Weeks: "
+ str(round(weeks, 2)),
font="Verdana 8").grid(row=2, sticky=W)
labelDays = Label(root,
text="Days: "
+ str(round(days, 2)),
font="Verdana 8").grid(row=3, sticky=W)
labelHours = Label(root,
text="Hours: "
+ str(round(hours, 2)),
font="Verdana 8").grid(row=4, sticky=W)
labelMinutes = Label(root,
text="Minutes: "
+ str(round(minutes, 2)),
font="Verdana 8").grid(row=5, sticky=W)
labelSeconds = Label(root,
text="Seconds: "
+ str(round(str8.total_seconds())),
font="Verdana 8").grid(row=6, sticky=W)
buttonRefresh = Button(root,
text="EXIT",
font="Verdana 8",
height=1,
width=19,
command=exit).grid(row=7)
def calculate():
event = datetime(2017, 3, 29, 13, 45, 0)
tday = datetime.now()
str8 = tday - event
seconds = str8.total_seconds()
minutes = str8.total_seconds()/60
hours = minutes/60
days = hours/24
weeks = days/7
years = weeks/52
return event, tday, str8, seconds, minutes, hours, days, weeks, years
def printit():
Timer(1.0, printit).start()
calculate()
display()
main()
root.mainloop()
Python 3.6。
ありがとうございます。 – wraith46