【问题标题】:Disable window move in Tkinter Python在 Tkinter Python 中禁用窗口移动
【发布时间】:2020-03-13 13:04:51
【问题描述】:

看来我在等待继续轰炸问题。这很短,是否可以在不删除此顶部栏的情况下禁用 Tkinter 窗口的移动?

它会给出一个最小且可重现的代码,但如果它只有两行,那将是无用的。

【问题讨论】:

  • 出于好奇,为什么要取消用户移动窗口的能力?
  • 您好,对不起,我的脚本有问题让我很困惑,而且与社区打交道也不容易,所以我有点困惑。我这样做不是为了避免进一步的混乱,但现在我认为你需要知道。我将创建新问题以反映真实情况。
  • 我知道这不是一个答案。但我想在一小时内建议我将删除这个问题。它导致了一场灾难。我需要重新考虑问题:(
  • 由于问题已回答,您可能无法删除该问题。您可以请回答的人是否愿意删除答案,以便您将其删除,但我想请您重新考虑删除。
  • 哎呀,我碰巧复制和粘贴。我只是重新考虑了一下。如果我可以稳定问题并使用正确的数据提出正确的问题,我将链接到一个新问题。我必须放弃沉船并创造另一艘。我不知道是什么导致了问题,我认为您不能容忍多行代码。

标签: python tkinter window


【解决方案1】:

为你的窗口绑定一个事件,并设置窗口.geometry()

但是现在你不能通过拖动窗口的边框来修改窗口大小(但它可以最大化窗口。)。

下面是代码示例:

import tkinter

def GetWindowPos():
    global X,Y
    X = win.winfo_geometry().split("+")[1]
    Y = win.winfo_geometry().split("+")[2]
    win.bind_all('<Configure>', HoldOn)

def HoldOn(event):
    win.geometry("+{}+{}".format(X,Y))

win = tkinter.Tk()
win.geometry("400x400+{}+{}".format(12,12))
tkinter.Label(win,text="Halo!").grid()
win.after(100,GetWindowPos)

win.mainloop()

【讨论】:

  • 你好,对不起,我的脚本有问题让我很困惑,而且与社区打交道也不容易,所以我有点困惑。我这样做不是为了避免进一步的混乱,但现在我认为你需要知道。我将创建新问题以反映真实情况。您的代码运行良好,但不幸的是它并没有解决我的问题。
【解决方案2】:

我找到了一种方法,但正如您可能知道的那样,要取得一些成就,我们必须失去一些东西!

你可以使用:

root.overrideredirect(True) # turns off title bar

您将无法移动 tkinter 窗口,并且 Tkinter 应用程序将不会显示在任务栏中,但您也会丢失标题栏。 但如果你希望有标题栏, 然后你可以通过this link创建一个。

或者使用下面来制作一个新的标题栏也可以移动它(from this answer)

def move_window(event):
    root.geometry('+{0}+{1}'.format(event.x_root, event.y_root)


# bind title bar motion to the move window function
title_bar.bind('<B1-Motion>', move_window)

但是您的 Tkinter 应用程序仍然不会显示在任务栏中,这是一个解决方案(from this answer):

root = tkinter.Tk()
top = tkinter.Toplevel(root)
root.attributes("-alpha",0.0) # to make root invisible

#toplevel follows root taskbar events (minimize, restore)
def onRootIconify(event): top.withdraw()
root.bind("<Unmap>", onRootIconify) 
def onRootDeiconify(event): top.deiconify()
root.bind("<Map>", onRootDeiconify)

您可以在根对象下添加一个顶层窗口,使顶层不可见,然后处理顶层的图标事件来隐藏或显示任务栏上的根窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 2019-05-07
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2015-05-25
    • 2018-01-10
    相关资源
    最近更新 更多