【问题标题】:Move two windows together tkinter一起移动两个窗口tkinter
【发布时间】:2020-04-14 10:13:54
【问题描述】:

我有两种类型的窗口:主窗口和子窗口。当我移动主窗口时,所有子窗口也必须移动。 所以我试着写一个方法,但我是 Tkinter 的新手,所以有点难。 Tkinter 不是已经提供了一种方法吗? 发生了两个错误:

第 21 行,在 move_me 中,如果 second_window != None: NameError: name 'second_window' 未定义

wm_geometry() 接受 1 到 2 个位置参数,但给出了 3 个

''' import tkinter as tk 从 tkinter 导入 * 从 tkinter 导入 Tk 从 functools 导入部分 从 tkinter 导入文件对话框 将 tkinter 导入为 tk

root=Tk()

def second_window_X():
    global second_window
    second_window=Tk()
    label=Label(second_window, text='window')
    label.pack()

button=Button(root, text='second window', command=second_window_X)
button.pack()

def move_me(event):
    if second_window != None:
        x = root.winfo_x()
        y = root.winfo_y()
        second_window.geometry(x,y)
root.bind("<Configure>", move_me)

root.mainloop()````

有没有人可以给我一个例子,如何将两个窗口链接在一起并让它们同时移动?谁能给我解释一下,为什么即使我声明它是全局的,我也不知道 second_window?

已经非常感谢你了

对不起所有的进口

【问题讨论】:

  • 首次调用move_me 时,尚未创建second_window。而second_window.geometry(x, y) 应该是second_window.geometry('+%s+%s' % (x, y))。
  • 你不应该有两个 Tk 实例。如果你想要第二个窗口,它应该使用 Toplevel。

标签: python windows tkinter binding move


【解决方案1】:

正如我在评论中所建议的,您不应该在一个应用程序中拥有两个 Tk 实例。您的第二个窗口应该是 Toplevel 的一个实例。

当第一个窗口移动/调整大小时,下面的代码会移动第二个窗口。

from tkinter import *

root=Tk()

second_window = None

def second_window_X():
    global second_window
    second_window=Toplevel(root)
    label=Label(second_window, text='window')
    label.pack()

button=Button(root, text='second window', command=second_window_X,width=100)
button.pack()

def move_me(event):
    try:
        if second_window != None:
            x = root.winfo_x()
            y = root.winfo_y()
            second_window.geometry(f"+{x}+{y}")
    except NameError:
        pass
root.bind("<Configure>", move_me)

root.mainloop()

【讨论】:

  • 我试图将该函数放入一个更复杂的程序中,但现在我遇到的问题是它的 _tkinter.tkapp' 对象没有属性 'info_y'。你知道那个错误吗?我真的很想展示那段代码,但我只剩下大约 300 个字符......
  • @Fi-cyber 您应该针对该问题提出一个新问题。我已经解决了你原来的问题。
猜你喜欢
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 2013-09-18
  • 2023-04-06
  • 2018-05-11
  • 2018-11-17
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多