【问题标题】:how to stitch two tkinter windows?如何缝合两个 tkinter 窗口?
【发布时间】:2021-07-16 09:14:00
【问题描述】:

我需要将两个或多个 tkinter 窗口拼接在一起,这样如果一个窗口移动,其他窗口就会一起移动。这将给人一种印象,即只有一个窗口打开并处于焦点位置,而不是显示多个窗口。我试图阅读并找到解决方案,但没有解决方案直接解决此问题。我承认使用配置,我们可以检测到 tkinter 窗口的移动,然后绑定一个函数,可以用来拼接打开的窗口。但我不能这样做。以下是我目前的代码:

import tkinter as tk
from tkinter import *
root = tk.Tk()
root.geometry("350x300+200+100") 

def opennewwindow():
    newWindow = Toplevel(root)
    newWindow.geometry("350x300+200+100") 
def move(event=None):
    w = root.winfo_width()
    h = root.winfo_height()
    x = root.winfo_x()
    y = root.winfo_y()    
    root.geometry("%ix%i+%i+%i" % (w, h, x, y))

button = tk.Button(root, text = "button", command=opennewwindow)
button.place(width=160,   height=70, x=24, y=100)
root.bind("<Configure>", move)
root.mainloop()

谢谢

【问题讨论】:

  • 你为什么不打电话给root.withdraw()?如果您想再次显示它,您可以致电root.deiconify()

标签: python python-3.x tkinter


【解决方案1】:

这就是你要找的东西:

import tkinter as tk
from tkinter import *
root = tk.Tk()
root.geometry("350x300+200+100")
tp = None


def open_new_window():
    global tp
    tp = Toplevel(root)


def move(event=None):
    if tp is None:
        return
    w = root.winfo_width()
    h = root.winfo_height()
    x = root.winfo_x()
    y = root.winfo_y()
    tp.geometry(f"{w}x{h}+{x}+{y}")


button = tk.Button(root, text="button", command=open_new_window)
button.place(width=160,   height=70, x=24, y=100)
root.bind("<Configure>", move)
root.mainloop()

如果您有问题,我还没有想到如何在不使用全局的情况下做到这一点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 2013-01-08
    • 2013-09-18
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多