WXPython Максимизировать фрейм Отключить изменение размера
Я использую Python 2.7.6 и wxPython 2.8.12.1 в Linux Mint 17.1 KDE Desktop 4.14.2. Я пытаюсь разработать приложение, в котором окно будет развернуто в максимальном размере, и в нем не будет окна максимизации или изменения размера. Другими словами, пользователи не смогут изменить размер окна. Вот мой код
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 ответа
RESIZE_BOX не является допустимым стилем, после того как я его удалю и добавлю MINIZE_BOX к стилям, которые нужно удалить, он работает для меня на Win8 и Mint17 с 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(
)
Я попробовал некоторый код на 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
чтобы получить его максимально. Я также немного отредактировал флаги стиля. Вы также можете найти следующие статьи полезными: