wxPython图形用户界面

2024-05-18 15:32:57 发布

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

好的,我有一个应用程序我正在编码,并试图得到一个更简单的布局: Sizer Alignment with all the input boxes aligned

注意文本是如何左对齐的,输入框都是对齐的,我在wxPython演示代码中看到了这一点,但是它们都使用flexgrid sizer,我尝试只使用boxsizer(因为它们更简单,而且我只懂一点sizer,甚至很难使用boxsizer,6个月后我的日子会更难过)

我尝试过将输入和文本放在两个垂直的大小器中,然后再将它们放在一个水平的大小调整器中,但没有成功,因为文本与输入不对齐。我也试过这样做,而且让每个文本,输入配对在一个大小,甚至更糟。有什么建议吗?在


Tags: 代码文本应用程序编码wxpython水平布局建议
2条回答

对于除了最基本的布局之外的大多数布局,为了实现您的设计,您通常无法避免使用多种不同类型的尺寸调整器。在

Here是一个很好的sizer教程。在

下面是一个仅使用BoxSizer的简单示例:

import wx

class MyForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial")

        # Add a panel so it looks the correct on all platforms
        panel = wx.Panel(self, wx.ID_ANY)

        # create the labels
        lblOne = wx.StaticText(panel, label="labelOne", size=(60,-1))
        lblTwo = wx.StaticText(panel, label="lblTwo", size=(60,-1))
        lblThree = wx.StaticText(panel, label="lblThree", size=(60,-1))

        # create the text controls
        txtOne = wx.TextCtrl(panel)
        txtTwo = wx.TextCtrl(panel)
        txtThree = wx.TextCtrl(panel)

        # create some sizers
        mainSizer = wx.BoxSizer(wx.VERTICAL)
        lineOneSizer = wx.BoxSizer(wx.HORIZONTAL)
        lineTwoSizer = wx.BoxSizer(wx.HORIZONTAL)
        lineThreeSizer = wx.BoxSizer(wx.HORIZONTAL)

        # add widgets to sizers
        lineOneSizer.Add(lblOne, 0, wx.ALL|wx.ALIGN_LEFT, 5)
        lineOneSizer.Add(txtOne, 0, wx.ALL, 5)
        lineTwoSizer.Add(lblTwo, 0, wx.ALL|wx.ALIGN_LEFT, 5)
        lineTwoSizer.Add(txtTwo, 0, wx.ALL, 5)
        lineThreeSizer.Add(lblThree, 0, wx.ALL|wx.ALIGN_LEFT, 5)
        lineThreeSizer.Add(txtThree, 0, wx.ALL, 5)

        mainSizer.Add(lineOneSizer)
        mainSizer.Add(lineTwoSizer)
        mainSizer.Add(lineThreeSizer)

        panel.SetSizer(mainSizer)

# Run the program
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    frame.Show()
    app.MainLoop()

但这有点混乱,所以这里有一个重构版本:

^{pr2}$

相关问题 更多 >

    热门问题