【问题标题】:Python/Tkinter make a custom windowPython/Tkinter 制作自定义窗口
【发布时间】:2012-06-26 03:16:22
【问题描述】:

我想制作一个没有顶部任务栏的窗口(即可移动),因此 GUI 框周围只有细的轮廓。我还想在框中添加我自己的“X”。

import Tkinter

class Application(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.parent = master
............
def main():
    root = Tk()
    root.attributes('-fullscreen', True)
    root.geometry('500x250+500+200')
    app = Application(root)
    app.parent.configure(background = 'gray32')
    root.resizable(width=FALSE, height=FALSE)
    app.mainloop()

main()

我尝试在进入全屏模式以移除任务栏后强制框调整大小,但框不再可移动。有什么建议吗?

[我看过这个帖子:Removing or disabling a resizable Tkinter window maximise button under Windows

-toolwindow 属性对我不起作用,可能是因为我使用的是 linux...]

【问题讨论】:

  • 也许尝试调用窗口的最大化?但是,这需要它可调整大小,但您始终可以在它最大化后关闭调整大小:)
  • 这就是我在上面给出的代码中所做的......我不希望它完全最大化,只是一个顶部没有任务栏的中型框。

标签: python user-interface tkinter


【解决方案1】:

我用root.overrideredirect(1) 替换了全屏命令(你说你不希望它完全最大化),它提供了一个没有标题栏的窗口(不是taskbar,那是别的东西)。

def main():
    root = Tk()
    root.overrideredirect(1)
    root.geometry('500x250+500+200')
    app = Application(root)
    app.parent.configure(background = 'gray32')
    root.resizable(width=FALSE, height=FALSE)
    app.mainloop()

【讨论】:

  • @user1435947:只需添加用于单击和拖动的绑定,如this question的答案中所述
  • @user1435947:它是可移动的,但是您删除了操作系统允许您移动它的方式。您需要将自己的绑定添加到边框,或者为用户提供一些其他方式来移动它。绑定<ButtonPress-1><B1-Motion><ButtonRelease-1> 并允许用户移动窗口非常简单
  • 谢谢!我必须创建 3 个函数来使用所有三个事件,有必要吗?
  • 该窗口没有像所有其他 Windows 7 应用程序@Junuxx 那样的“平滑阴影”边框,即使是那些没有标准边框的应用程序:例如 iTunes(它没有标准边框)仍然具有平滑的阴影边框。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
相关资源
最近更新 更多