使用Tkinter提醒每隔X分钟提醒一次

时间:2017-03-27 05:13:56

标签: python user-interface tkinter tk reminders

我是python GUI和Tkinter的新手。现在我想要一个输入字段,我可以在执行此代码时更改 self.hide 的值或时间。这意味着 self.hide 值将从Entry字段更改。在此代码中,此值静态设置为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()

2 个答案:

答案 0 :(得分:0)

总结:

  1. 使用after函数代替使用sleep函数。这不会冻结GUI。

  2. 设置"等待" after函数self.Entry.get()的时间。这将收集您在条目中输入的信息。

  3. 有关详细信息,请查看这些链接。比我聪明的人对如何使用这些功能给出了非常明确的解释。 Tkinter, executing functions over time tkinter: how to use after method

答案 1 :(得分:0)

试试这个。它可能对你有帮助。

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()