我在python和tkinter中编写了一个任务提醒应用程序。它使用任务计划程序安排提醒。提醒由屏幕上某个位置的小GUI程序显示。我的问题是提醒相互重叠。当出现多个提醒时,如何让它们出现在不同的位置? 请注意,我指的是为每个提醒单独调用GUI程序。
这种情况类似于打开计算器程序的多个副本。它们在屏幕上的不同位置打开。它是如何发生的?
创建提醒的程序如下 -
from tkinter import *
import shelve
import sys
def showTask(parent, key):
parent.title('Reminder')
parent.geometry('300x100-0-40')
parent.rowconfigure(0, weight=1)
parent.columnconfigure(0, weight=1)
shelfFile = shelve.open('C:\\Users\\hp\\pypgms\\data\\tasks')
message = shelfFile[key]['name']
shelfFile.close()
Label(parent, text=message).grid(padx=20, pady=20, sticky=NW)
btn = Button(parent, text='Ok', command=parent.quit)
btn.grid(pady=5)
btn.bind('<Return>', lambda e: parent.quit())
key = sys.argv[1]
root = Tk()
showTask(root, key)
root.mainloop()
答案 0 :(得分:0)
Tkinter窗口有一个名为geometry()
的方便方法,可以在this format之后的屏幕上定义它们的大小和位置:
root.geometry('250x150+300+300') # width=250, height=150, position=(300,300)
请参阅下文,了解如何使用它来打开彼此相邻的提醒窗口:
import Tkinter as tk
class MainApp():
def __init__(self, root):
self.root = root
self.reminderWindows = []
self.button = tk.Button(self.root, text="New reminder",
command=self.open_new_reminder)
self.button.pack()
def open_new_reminder(self):
reminder = tk.Toplevel(self.root)
self.reminderWindows.append(reminder)
windowNumber = len(self.reminderWindows)
reminder.geometry("100x120+{}+200".format(str(150*windowNumber)))
if __name__ == "__main__":
app = tk.Tk()
MainApp(app)
app.mainloop()