CSDN-Ada助手 2023-11-28 18:21 采纳率: 1.6%
浏览 9

wxPython布局,为什么我的这个程序无法布局?

该问题来自社区帖: https://bbs.csdn.net/topics/617652341.为符合问答规范, 该问题经过ChatGPT优化
以下是我优化后的问题: ```

下面是我的代码:

import wx


class RoundedList(wx.Window):

    def __init__(self, master, pos, size):
        self.items = {}
        self.box = wx.BoxSizer(wx.VERTICAL)

        self.size = size
        super().__init__(master, id=wx.ID_ANY, pos=pos, size=size)
        self.x = size[0]
        self.y = size[1]
        self.Bind(wx.EVT_PAINT, self.OnPaint)
        self.Bind(wx.EVT_SIZE, self.OnSize)
        
        text1 = wx.StaticText(self, label='1')
        text2 = wx.StaticText(self, label='2')
        self.box.Add(text1)
        self.box.Add(text2)
        self.SetSizer(self.box)

    def OnPaint(self, event):
        self.pdc = wx.PaintDC(self)
        self.pdc.SetPen(wx.Pen((0, 176, 80)))
        self.pdc.SetBrush(wx.Brush((0, 224, 100)))
        self.pdc.DrawRoundedRectangle(0, 0, self.x, self.y, 5)

    def OnSize(self, event):
        self.Refresh()


app = wx.App()
frame = wx.Frame(None, id=wx.ID_ANY, title='', size=(810, 650), 
                         style=wx.DEFAULT_FRAME_STYLE)
frame.Show()
a = RoundedList(frame, pos=(200, 200), size=(200, 100))
app.MainLoop()

效果:

我的想法是,应该两个文本往下排列,上面是1,下面是2,但是现在2把1给盖上了,布局没起作用。倒是我用绝对布局的时候可以布局。

在我用到这段代码的程序上,效果是这样的:

而且用pos参数在这里也无效了。

``` 请检查以上优化后的问题是否满足您的要求。
  • 写回答

3条回答 默认 最新

  • 渴口可乐 2023-11-28 19:05
    关注

    你把两个self.Bind(wx.EVT_PAINT, self.OnPaint)这个改成一样的就可以了

    评论

报告相同问题?

问题事件

  • 创建了问题 11月28日