使用 Tkinter 做一个提醒,每 X 分钟提醒一次
Make a reminder which will remind every X minute using Tkinter
我是 python GUI 和 Tkinter 的新手。现在我想要一个输入字段,当我执行此代码时,我可以在其中更改 self.hide 的值或时间。这意味着 self.hide 值将从输入字段更改。在此代码中,此值静态设置为 1 分钟。需要专家的帮助。
import Tkinter as Tk
import time
import tkMessageBox
class Window:
def __init__(self):
self.root = None
self.hide = 1 #minutes
self.show = 3 #seconds
def close(self):
self.root.destroy()
return
def new(self):
self.root = Tk.Tk()
self.root.overrideredirect(True)
self.root.geometry("{0}x{1}+0+0".format(self.root.winfo_screenwidth(), self.root.winfo_screenheight()))
self.root.configure(bg='black')
Tk.Label(self.root, text='Hello', fg='white', bg='black', font=('Helvetica', 30)).place(anchor='center', relx=0.5, rely=0.5)
#tkMessageBox.showinfo("Notification", "Your time is up. Time to do next job. . .")
Tk.Button(text = 'Close', command = self.close).pack()
self.root.after(self.show*1000, self.pp)
def pp(self):
if self.root:
self.root.destroy()
time.sleep(self.hide*60)
self.new()
self.root.mainloop()
return
Window().pp()
总结一下:
不使用 sleep 函数,而是使用 after 函数。这不会冻结 GUI。
设置after函数self.Entry.get()的"wait"时间。这将收集您输入条目的信息。
有关详细信息,请查看这些链接。比我聪明的人对如何使用这些功能给出了非常明确的解释。
Tkinter, executing functions over time
tkinter: how to use after method
试试这个。可能对你有帮助。
from Tkinter import *
import time
root = Tk()
def close():
root.destroy()
def show():
root.deiconify()
button.config(text = 'Close', command = close)
root.after(1000, hide)
def hide():
root.withdraw()
time_to_sleep = set_time_to_sleep.get()
time_to_sleep = float(time_to_sleep)
#print time_to_sleep
time.sleep(time_to_sleep)
show()
set_time_to_sleep = Entry(root)
set_time_to_sleep.pack(side=LEFT)
button = Button(text = 'Set Time', command = hide)
button.pack()
root.mainloop()
我是 python GUI 和 Tkinter 的新手。现在我想要一个输入字段,当我执行此代码时,我可以在其中更改 self.hide 的值或时间。这意味着 self.hide 值将从输入字段更改。在此代码中,此值静态设置为 1 分钟。需要专家的帮助。
import Tkinter as Tk
import time
import tkMessageBox
class Window:
def __init__(self):
self.root = None
self.hide = 1 #minutes
self.show = 3 #seconds
def close(self):
self.root.destroy()
return
def new(self):
self.root = Tk.Tk()
self.root.overrideredirect(True)
self.root.geometry("{0}x{1}+0+0".format(self.root.winfo_screenwidth(), self.root.winfo_screenheight()))
self.root.configure(bg='black')
Tk.Label(self.root, text='Hello', fg='white', bg='black', font=('Helvetica', 30)).place(anchor='center', relx=0.5, rely=0.5)
#tkMessageBox.showinfo("Notification", "Your time is up. Time to do next job. . .")
Tk.Button(text = 'Close', command = self.close).pack()
self.root.after(self.show*1000, self.pp)
def pp(self):
if self.root:
self.root.destroy()
time.sleep(self.hide*60)
self.new()
self.root.mainloop()
return
Window().pp()
总结一下:
不使用 sleep 函数,而是使用 after 函数。这不会冻结 GUI。
设置after函数self.Entry.get()的"wait"时间。这将收集您输入条目的信息。
有关详细信息,请查看这些链接。比我聪明的人对如何使用这些功能给出了非常明确的解释。 Tkinter, executing functions over time tkinter: how to use after method
试试这个。可能对你有帮助。
from Tkinter import *
import time
root = Tk()
def close():
root.destroy()
def show():
root.deiconify()
button.config(text = 'Close', command = close)
root.after(1000, hide)
def hide():
root.withdraw()
time_to_sleep = set_time_to_sleep.get()
time_to_sleep = float(time_to_sleep)
#print time_to_sleep
time.sleep(time_to_sleep)
show()
set_time_to_sleep = Entry(root)
set_time_to_sleep.pack(side=LEFT)
button = Button(text = 'Set Time', command = hide)
button.pack()
root.mainloop()