WXPython最大化帧禁用调整大小

时间:2015-04-10 16:31:02

标签: wxpython kde

我在Linux Mint 17.1 KDE Desktop 4.14.2上使用Python 2.7.6和wxPython 2.8.12.1。我正在尝试开发一个应用程序,其中窗口将开始最大化,并且将没有最大化框或调整大小框。换句话说,用户将无法调整窗口大小。这是我的代码。

import wx

class Frame1(wx.Frame):
    def __init__(self, *args, **kwds):
        kwds["style"] = (wx.DEFAULT_FRAME_STYLE|wx.MAXIMIZE) & ~ (wx.RESIZE_BORDER|wx.RESIZE_BOX|wx.MAXIMIZE_BOX)
        wx.Frame.__init__(self, *args, **kwds)
        self.Layout()
        self.Show()

if __name__ == "__main__":
    a = wx.App(0)
    f = Frame1(None, -1, "No Resize")
    a.MainLoop()

在KDE桌面上,我没有获得最大化的窗口。我在这里缺少什么?

请帮忙。

感谢。

2 个答案:

答案 0 :(得分:0)

RESIZE_BOX不是一个有效的样式,删除它并将MINIZE_BOX添加到要删除的样式后,它适用于Win8和Mint17 with Phoenix以及wxPython 2.8.12.1(gtk2-unicode):

import wx

class Frame1(wx.Frame):
    def __init__(self, *args, **kwds):
        kwds["style"] = (wx.DEFAULT_FRAME_STYLE|wx.MAXIMIZE) & ~ (wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX)
        wx.Frame.__init__(self, *args, **kwds)
        self.Layout()
        self.Show()

if __name__ == "__main__":
    a = wx.App(0)
    f = Frame1(None, -1, "No Resize")
    a.MainLoop(

答案 1 :(得分:0)

我在Kubuntu上尝试了一些代码并想出了这个:

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        style = wx.SYSTEM_MENU | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX
        wx.Frame.__init__(self, None, title='Test', style=style)
        panel = wx.Panel(self)
        btn = wx.Button(panel, label="Close")
        btn.Bind(wx.EVT_BUTTON, self.onClose)

        self.Show()
        self.Maximize(True)

    def onClose(self, event):
        self.Close()


if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()

关键是调用ShowFullScreen让它最大化。我还略微编辑了样式标志。您可能还会发现以下文章有用: