tkinter如何在屏幕上的不同位置打开2个或更多根窗口

时间:2017-06-02 09:17:42

标签: python-3.x tkinter

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

1 个答案:

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