Tkinter 使用python而不使用python的代码
我正在写一个脚本,我希望它在后台运行,每6个小时显示一次。我不想一直打开控制台,我希望tkinter弹出一个窗口,在其中打印脚本的输出,然后关闭,这将在6小时内完成 这是我的密码Tkinter 使用python而不使用python的代码,tkinter,pythonw,Tkinter,Pythonw,我正在写一个脚本,我希望它在后台运行,每6个小时显示一次。我不想一直打开控制台,我希望tkinter弹出一个窗口,在其中打印脚本的输出,然后关闭,这将在6小时内完成 这是我的密码 from datetime import datetime import time from tkinter import Tk, Label dict_n = {} def func(): def check(): today = datetime.today() a =
from datetime import datetime
import time
from tkinter import Tk, Label
dict_n = {}
def func():
def check():
today = datetime.today()
a = str(today.day) + "/" + str(today.month)
li_b = []
li_c = []
li_l = []
li_k = []
for i, j in dict_n.items():
l = j.replace(" ","")[:-5]
li_l.append(l)
if l == a:
c = 0b1
li_b.append(i)
li_c.append(c)
li_k.append(j[-4:])
else:
c = 0b0
li_c.append(c)
k = str(today.year)
return a, li_c, li_b, k, li_k
date, li_bit, li_names, k, li_k = check()
v = "Hi!"
v += ("string " + date + "\n")
maskb = 0b1
d = 0
for p in li_bit:
if p & maskb == 0:
d += 0
if p & maskb != 0:
m = int(k) - int(li_k[d])
v += ("string" + li_b[d] + str(m))
d += 1
if d == 0:
v += ("string")
return v
def main():
root = Tk()
test = func()
w = Label(root, text=test)
w.pack()
root.mainloop()
g = 1
while g != 2:
root = Tk()
time.sleep(21600)
retest = func()
h = Label(root, text=retest)
h.pack()
root.mainloop()
if __name__ == '__main__':
main()
问题是:只要我使用python.exe,它就可以完美地工作。但是因为我不想打开控制台,所以我想使用pythonw.exe。然后它就不起作用了。我说它不起作用的是,当我通过简单的双击从桌面执行脚本时,什么也没有发生。(与python.exe的使用不同,python.exe的行为完全符合我的要求,每隔6小时,就会弹出一个窗口,其中会打印“func”的输出)
很抱歉代码太多,但我听说有些操作在没有控制台的情况下无法运行,我不知道哪个操作会出现此问题
你能帮我找出这个问题吗
Capurot我不知道为什么您的代码“不工作”,但我不知道您的意思。然而,您在代码中肯定做了一些非常错误的事情,这会阻止它在任何情况下工作。我发现很难相信,无论你如何运行它,它都能正常工作 您首先在无限循环之前调用mainloop(因为您从未将g设置为2),因此在销毁创建的窗口之前,该循环不会运行。然后,一旦原始窗口被破坏,就进入一个循环,在每次迭代中调用mainloop。同样,mainloop在销毁窗口之前不会退出,因此循环要求您不断地一次又一次地销毁窗口
Tkinter设计为以特定方式使用,即创建
Tk
的单个实例,并准确调用mainloop
。除非你深入了解Tkinter的工作原理,否则任何其他东西都会给你带来意想不到的行为。什么是“不工作”呢?你有错误吗?它真的工作了吗,只是没有按您认为应该的方式工作?您是否尝试过转到控制台并键入“pythonw my_script.py”?这样做可能会显示一些错误。好的,我刚刚做了,结果很有趣,如果我键入pythonw my_script.py,它只会打开一个包含函数输出的窗口一次,然后就不会像关闭控制台一样重复。但当我键入pythonw my_script.pyw时,它的工作方式与我想要的完全一样。每次设定的时间窗口都会弹出,当我关闭窗口时,计时器会重置。出于某种原因,当我试图通过双击来执行它时,即使我使用了sur,我使用了与控制台中的pythonw.exe相同的路径,但它不起作用。因此,我尝试了不同的方法,使脚本与pythonw一起工作的唯一方法是执行C://filepath/pythonw.exe C://filepath/my_script.pyw。我对python相当陌生,甚至比python更新特金特(今天发现的)。我的意思是,我很清楚,基本上什么都不做是做事情的最佳方式,但是,无限循环不是一种真正的方式来循环脚本evrey 6小时来做完全相同的事情,如果我不在我的办公桌上,也不打开多个窗口,因为循环只能在我关闭窗口时继续?任何建议显然都是非常受欢迎的。我一定会编辑原稿,精确解释“如何”不起作用,谢谢