【问题标题】:How to remove just the window border?如何仅删除窗口边框?
【发布时间】:2015-06-27 05:35:18
【问题描述】:

我想删除使用tkinter 制作的应用程序的窗口边框。

我已经用过overrideredirect(1),但它并没有让我满意:它按照我的意愿移除了窗口边框,但它也移除了任务栏上的图标。

我怎样才能删除窗口边框?

【问题讨论】:

    标签: python tkinter window


    【解决方案1】:

    我想这就是你所要求的。我不知道您是否可以在不使用Toplevel 的情况下执行此操作,但这里有一个小示例,说明您可以执行哪些操作来删除窗口边框并将图标保留在任务栏中。

    import tkinter as tk
    
    root = tk.Tk()
    root.attributes('-alpha', 0.0) #For icon
    #root.lower()
    root.iconify()
    window = tk.Toplevel(root)
    window.geometry("100x100") #Whatever size
    window.overrideredirect(1) #Remove border
    #window.attributes('-topmost', 1)
    #Whatever buttons, etc 
    close = tk.Button(window, text = "Close Window", command = lambda: root.destroy())
    close.pack(fill = tk.BOTH, expand = 1)
    window.mainloop()
    

    然后你可以添加按钮,标签,任何你想要的东西window

    【讨论】:

    • 哇!有效,非常感谢。但是,当我遵循此代码时,程序总是在顶部存在一个问题。你能解决这个问题吗?
    • 编辑帖子应该可以解决您的问题。如果有帮助,你介意接受吗?
    • 实际上这对我不起作用,在 Windows 上,当我单击任务栏中的图标以缩小一切正常,但是当我再次单击以展开窗口时,不会出现在顶部.
    【解决方案2】:

    如果您使用的是 Canvas(因为该线程是 Google 中的第一个结果)并且您的这些边框让您烦恼,当您希望您的画布成为窗口时,Canvas 的构造函数有一个参数应该适合您的需求:highlightthickness=0

    import tkinter as tk
    
    root = tk.Tk()
    root.overrideredirect(True)
    
    w, h = 800, 500
    
    canvas = tk.Canvas(root, width=w, height=h, highlightthickness=0)
    # ...
    # Do your things in your canvas
    # ...
    
    canvas.pack(fill='both')
    
    root.mainloop()
    

    【讨论】:

    • 如何在画布中创建可拖动的空间?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多