调整wx python对话框的大小在windows上不起作用

调整wx python对话框的大小在windows上不起作用,windows,wxpython,Windows,Wxpython,我有一个对话框,我想调整大小。它在Linux上工作得很好,但在Windows上它不会调整大小 我知道使用wx.Frame和MakeModal是一种权宜之计,但为什么这不起作用呢 import wx class TestDialog(wx.Dialog): MIN_SIZE = (200, 100) def __init__(self, *args, **kwargs): super(TestDialog, self).__init__(None, *args,

我有一个对话框,我想调整大小。它在Linux上工作得很好,但在Windows上它不会调整大小

我知道使用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 ipsum dolor sit amet,是一位杰出的献身者。前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭前庭。纳拉姆·亚库利斯在格言中写道。这是一个很好的例子。玛塞纳斯权杖,奥迪奥·维塔·普莱拉特·坦普斯,梅特斯·莫里斯·库鲁斯·埃拉特,瓦努特·莫里斯·图尔皮斯·阿梅特·乌尔纳。在hac habitasse Plateum,一句名言。不允许任何欧盟成员国参加欧盟非欧盟委员会的会议。我们坐在维尼那提斯广场上。虎口浮雕和肘部浮雕同侧前庭;这是一个非常好的例子。埃尼安和利奥·胡斯托。肌肉痉挛。但是,我不知道该怎么做,因为我的面部轮廓很模糊。Ut justo sem,tellus eu中的tempus,faucibus ultricies Elite。Nam maximus sem lorem,porttitor porta mauris eleifend id.Integer调味品dolor non vehicula tincidunt。但是augue velit、placerat、efficitur et、scelerisque et nulla。

问题在于,您使用的是wx.对话框的默认样式,而这似乎会从一个操作系统更改为另一个操作系统

您只需通过更改线条来定义自定义样式:

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


完美的谢谢。@Psionman可能正在MWE中,但OK按钮的绑定工作不正常。你注意到了吗?我试图解决这个问题,但到目前为止没有运气。@krb85我不知道你的意思。它似乎在我的系统上运行得很好:@Psionman我已经在Win10和macOS 10.14.4上测试过了,OK按钮除了破坏wx.Dialog外,什么都没做。@krb65啊!明白你的意思了。它不叫"撕"
super(TestDialog, self).__init__(None, *args, style=wx.RESIZE_BORDER|wx.CAPTION|wx.CLOSE_BOX, **kwargs)