【问题标题】:wxpython custom titlebar with resize borderwxpython自定义标题栏与调整边框
【发布时间】:2021-08-31 08:35:56
【问题描述】:

我目前正在尝试为我的 wxpython 框架实现自定义标题栏。

当我设置 Frame(... style=wx.NO_BORDER,...) 时,我实际上得到了我想要的视觉结果,但是 Frame 是不可调整大小的。

如果我添加样式wx.RESIZE_BORDER,则可以调整框架大小,框架周围的小边框没有问题,但窗口顶部的边框实际上相当大且引人注目(见截图)。

有什么方法可以得到一个大小相等的边框来调整框架的大小?

最小的工作示例:

import wx

app = wx.App()
#frame = wx.Frame(None,style=wx.NO_BORDER)
frame = wx.Frame(None,style=wx.RESIZE_BORDER)
#frame = wx.Frame(None,style=wx.NO_BORDER|wx.RESIZE_BORDER)
frame.SetPosition((100,100))
frame.Show()
app.MainLoop()

【问题讨论】:

    标签: wxpython


    【解决方案1】:

    你总是可以使用wx.MiniFrame

    import wx
    app = wx.App()
    frame = wx.MiniFrame(None, style=wx.RESIZE_BORDER)
    frame.Show()
    app.MainLoop()
    

    会给你:

    import wx
    app = wx.App()
    frame = wx.MiniFrame(None, -1, "Miniframe", style=wx.CAPTION|wx.RESIZE_BORDER)
    frame.Show()
    app.MainLoop()
    

    愿意:

    黑色边框只是屏幕截图的一部分,让您可以看到框架轮廓。
    注意右下角的 Reverse L。这用于重新调整窗口大小。

    该类支持以下样式:

    wx.ICONIZE:显示框架图标化(最小化)(仅限 Windows)。

    wx.CAPTION:在框架上添加标题。

    wx.MINIMIZE:与 wx.ICONIZE 相同。

    wx.MINIMIZE_BOX:在框架上显示一个最小化框(仅限 Windows 和 Motif)。

    wx.MAXIMIZE:最大化显示框架(仅限 Windows)。

    wx.MAXIMIZE_BOX:在框架上显示一个最大化框(仅限 Windows 和 Motif)。

    wx.CLOSE_BOX:在框架上显示一个关闭框。

    wx.STAY_ON_TOP:保持在其他窗口之上(仅限 Windows)。

    wx.SYSTEM_MENU:显示系统菜单(仅限 Windows 和 Motif)。

    wx.RESIZE_BORDER:在窗口周围显示可调整大小的边框。

    【讨论】:

    • 谢谢,不知道这个类存在。在我的 Windows10 系统上,MiniFrame 给出与普通 Frame 相同的结果,知道这是否绑定到特定系统?你是在哪个系统上截屏的?
    • 这些屏幕截图取自 Ubuntu Linux 系统。窗口外观不可避免地与操作系统相关,并且在某种程度上与所选主题相关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多