这是我的代码: http: //pastebin.com/WwZri3e3
我想知道如何在每个标签名字姓氏和用户名的右侧实现一个文本框。
wxpython 文档很差,我尽我所能来获得更好的 wxpython 学习体验,而此刻我只是在空中摇摆。
我发现学习其他代码比阅读文档更有帮助。
谁能提供一些见解?谢谢!
这是我的代码: http: //pastebin.com/WwZri3e3
我想知道如何在每个标签名字姓氏和用户名的右侧实现一个文本框。
wxpython 文档很差,我尽我所能来获得更好的 wxpython 学习体验,而此刻我只是在空中摇摆。
我发现学习其他代码比阅读文档更有帮助。
谁能提供一些见解?谢谢!
我通常只使用 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
您可以(并且应该)进一步完善它,但这应该可以帮助您入门。
我通常做一个水平 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 中,而不是相反...