Python 如何在wx.GridBagSizer中实现wx.TextCtrl?

Python 如何在wx.GridBagSizer中实现wx.TextCtrl?,python,wxpython,Python,Wxpython,这是我的代码: 我想知道如何在每个标签的右侧实现一个文本框 名字 姓 和用户名 wxpython的文档非常糟糕,为了获得更好的wxpython学习体验,我已经尽了我所能,现在我只是在空中摇摆 我发现学习别人的代码比阅读文档更有帮助 有人能提供一些见解吗?谢谢 我通常制作一个水平的boxsizer def addWithLabel(parent,label,wxCtrl): sz_h1 = wx.BoxSizer(wx.HORIZONTAL) txt = wx.Stat

这是我的代码:

我想知道如何在每个标签的右侧实现一个文本框 名字 姓 和用户名

wxpython的文档非常糟糕,为了获得更好的wxpython学习体验,我已经尽了我所能,现在我只是在空中摇摆

我发现学习别人的代码比阅读文档更有帮助


有人能提供一些见解吗?谢谢

我通常制作一个水平的boxsizer

def addWithLabel(parent,label,wxCtrl):
       sz_h1 = wx.BoxSizer(wx.HORIZONTAL)
       txt = wx.StaticText(parent,-1,label)
       sz_h1.Add(txt)
       sz_h1.Add(wxCtrl)
       return sz_h1

my_vertical_sizer.Add(addWithLabel(my_parent,"Some Label:",wx.TextCtrl(my_parent,-1)))

或者,您可以将gridbagsizer添加到boxsizer中,而不是以其他方式…

我通常只使用gridbagsizer和一些定位变量来保持灵活性

草稿行版本如下所示:

self.gbs = wx.GridBagSizer(hgap=5, vgap=5)
lbl_name_first = wx.StaticText(self.panel, label = "First Name :" )
txt_name_first = wx.TextCtrl(self.panel,size=(200,-1))
self.gbs.Add(lbl_name_first, pos=(1, 1))
self.gbs.Add(txt_name_first, pos=(1, 2))
如果您为水平定位定义了几个“常量”,为垂直定位定义了行数,那么事情开始看起来像下面的代码。当需要在某处创建一点额外的空间时,命名柱和跨距真的很方便

# all caps mark 'constants'
COL_LEFT_LABEL = 2
COL_LEFT_FIELD = 3
SPAN_FULL_WIDTH = 4
nRowPosition = 1

lbl_name_first = wx.StaticText(self.panel, label = "First Name :" )
txt_name_first = wx.TextCtrl(self.panel,size=(200,-1))
self.gbs.Add(lbl_name_first, pos=(nRowPosition, COL_LEFT_LABEL))
self.gbs.Add(txt_name_first, pos=(nRowPosition, COL_LEFT_FIELD), flag=wx.EXPAND, span=(1, SPAN_FULL_WIDTH))
nRowPosition += 1
您可以(也应该)进一步完善它,但这应该让您开始