为什么我的水平尺寸标注器在添加到垂直尺寸标注器后会改变宽度?

2024-09-26 17:36:35 发布

您现在位置:Python中文网/ 问答频道 /正文

当我只使用一个TxtCtrl时,它的右侧会一直扩展到窗口边缘。但是在我创建了一个垂直的BoxSizer并添加了水平的BoxSizer之后,txtcrol的宽度只有大约100像素。为什么会这样?你知道吗

import wx

class MainPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, style=wx.SIMPLE_BORDER)

        top_box = wx.BoxSizer(wx.VERTICAL)

        box1 = wx.BoxSizer(wx.HORIZONTAL)
        box2 = wx.BoxSizer(wx.HORIZONTAL)
        textureName = wx.TextCtrl(self, 1)
        texturePath = wx.TextCtrl(self, 1)

        box1.Add(wx.StaticText(self, 1, "Name: "), 0, wx.LEFT|wx.RIGHT|wx.TOP, 5)
        box1.Add(textureName, 1, wx.ALIGN_LEFT|wx.RIGHT|wx.TOP, 5)

        box2.Add(wx.StaticText(self, 1, "Path:     "), 0, wx.LEFT|wx.RIGHT|wx.TOP, 5)
        box2.Add(texturePath, 1, wx.ALIGN_LEFT|wx.RIGHT|wx.TOP, 5)

        top_box.Add(box1)
        top_box.Add(box2)

        self.SetSizer(top_box)

class MainFrame(wx.Frame):
    def __init__(self, parent, id):
        title = "Exporter"
        wx.Frame.__init__(self, parent, wx.ID_ANY, title,
            size=(500, 420),
            style = wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE)
        self.panel = MainPanel(self)

        self.Show()

if __name__ == "__main__":
    app = wx.PySimpleApp()
    frame = MainFrame(None, -1)
    frame.Centre()
    app.MainLoop()
    pass

Tags: selfrightboxaddinittopleftclass
1条回答
网友
1楼 · 发布于 2024-09-26 17:36:35

您需要在样式中使用wx.EXPAND。你知道吗

top_box.Add(box1, 0, wx.EXPAND)
top_box.Add(box2)

enter image description here

Fromhere:“当一个项目被添加wxEXPAND标志时,该项目将被调整大小以填充其相反方向的分配区域。”

相关问题 更多 >

    热门问题