这是我的代码:http://pastebin.com/WwZri3e3
我想知道如何在每个标签的右侧实现一个文本框 名字 姓 和用户名。
wxpython文档非常糟糕,我已经尝试了一切,以便通过wxpython获得更好的学习体验,而且此刻我只是在空中摇摆。
我发现学习其他代码比阅读文档更有帮助。
任何人都可以提供一些见解吗?谢谢!
答案 0 :(得分:0)
我通常制作一个水平的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而不是相反...
答案 1 :(得分:0)
我通常只使用一个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
你可以(而且应该)进一步完善它,但这应该让你开始。