调整WX Python对话框的大小在Windows上不起作用



1的对话框我想解决。它可以在Linux上完美工作,但是在Windows上无法调整大小。

1知道使用wx.frame和makemodal可以解决,但是为什么不起作用?

import wx

class TestDialog(wx.Dialog):
    MIN_SIZE = (200, 100)
    def __init__(self, *args, **kwargs):
        super(TestDialog, self).__init__(None, *args, **kwargs)
        self.panel = MainPanel(self)
        self.Title = 'Test dialog'
        self.Bind(wx.EVT_CLOSE, self.on_quit_click)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.panel)
        self.SetSizer(sizer)
        self.SetMinSize(self.MIN_SIZE)
        self.SetSize(self.MIN_SIZE)
        self.status = wx.ID_CANCEL
    def on_cmd_ok_click(self, event):
        self.status = wx.ID_OK
        self._tear_down
    def on_quit_click(self, event):
        self._tear_down()
    def _tear_down(self):
        self.Destroy()

class MainPanel(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        super(MainPanel, self).__init__(parent, *args, **kwargs)
        self.parent = parent
        name_sizer = self._name_sizer(parent)
        button_sizer = self._button_sizer(parent)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(name_sizer, flag=wx.EXPAND)
        sizer.Add(button_sizer, flag=wx.EXPAND)
        self.SetSizer(sizer)
    def _name_sizer(self, parent):
        lbl_name = wx.StaticText(self, label='Name:')
        self.txt_name = wx.TextCtrl(self, size=(2000, -1))
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(lbl_name, flag=wx.ALIGN_CENTER)
        sizer.Add(self.txt_name, flag=wx.EXPAND)
        return sizer
    def _button_sizer(self, parent):
        cmd_action = wx.Button(self, id=wx.ID_OK)
        cmd_cancel = wx.Button(self, wx.ID_EXIT)
        cmd_action.Bind(wx.EVT_BUTTON, parent.on_cmd_ok_click)
        cmd_cancel.Bind(wx.EVT_BUTTON, parent.on_quit_click)
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(cmd_action)
        sizer.Add((0, 0), proportion=1)
        sizer.Add(cmd_cancel)
        return  sizer
if __name__ == '__main__':
    wx_app = wx.App()
    TestDialog().ShowModal()
    wx_app.MainLoop()

Lorem非常胡萝卜,番茄本科开发人员。活番茄弧,有针对性的mori或。nullam但是现在。设置的每个键盘漏物。Maecenas巧克力,在房地产时期对生命的仇恨,对毛里斯跑步的恐惧是,他是毛里斯丑陋的胡萝卜urna。在这条街道上。没有足球只是在摄影表演之前就不那么。现在,胡萝卜没有航空公司,它可以尽可能地进行消毒。在第一次撕裂的临床哀悼和篮球之前,他们的照顾;我不讨厌和摆脱ullamcorper的便利。茉莉花和狮子只是。Maecenas抓住辣椒或恐惧纸箱。为了节省玩家,蛋白质现在需要,生态抗氧化剂亲爱的。只是电视,地球足球的时间,喉咙超级开发商。对于最大的沙拉Lorem,创新的Gateway Mauris可扣除ID。整数酱消费者或车辆开发人员。宣传想要,按原价进行投资,巧克力和否。

问题是您正在使用wx.Dialog的默认样式,这似乎从一个OS变为另一个OS。

您只需要通过更改行来定义自定义样式:

super(TestDialog, self).__init__(None, *args, **kwargs)

to:

super(TestDialog, self).__init__(None, *args, style=wx.RESIZE_BORDER|wx.CAPTION|wx.CLOSE_BOX, **kwargs)

最新更新