Wxpython 使用哪种尺寸器以及如何实现?(凤凰卫视)
我有5个小部件,我需要在面板上布局 我想要的布局是:Wxpython 使用哪种尺寸器以及如何实现?(凤凰卫视),wxpython,Wxpython,我有5个小部件,我需要在面板上布局 我想要的布局是: StaticText: TextCtrl StaticText: TextCtrl Button 我需要整个实施过程。你会得到我对最干净解决方案的支持 然而,我的尝试有点不成熟 sizer1 = wx.BoxSizer(orient=wx.HORIZONTAL) sizer2 = wx.BoxSizer(orient=wx.HORIZONTAL) sizer3 = wx.BoxSizer(orient=wx.V
StaticText: TextCtrl
StaticText: TextCtrl
Button
我需要整个实施过程。你会得到我对最干净解决方案的支持
然而,我的尝试有点不成熟
sizer1 = wx.BoxSizer(orient=wx.HORIZONTAL)
sizer2 = wx.BoxSizer(orient=wx.HORIZONTAL)
sizer3 = wx.BoxSizer(orient=wx.VERTICAL)
sizer1.Add(window=labelOfTextFieldForURL,
border=5,
flag=wx.ALL | wx.ALIGN_CENTER)
sizer1.Add(window=self.textFieldForURL,
border=5,
flag=wx.ALL | wx.ALIGN_CENTER)
sizer2.Add(window=labelOfTextFieldForSearchTerm,
border=5,
flag=wx.ALL | wx.ALIGN_CENTER)
sizer2.Add(window=self.textFieldForSearchTerm,
border=5,
flag=wx.ALL | wx.ALIGN_CENTER)
sizer3.AddStretchSpacer()
sizer3.Add(sizer=sizer1,
border=5,
flag=wx.ALL | wx.ALIGN_CENTER)
sizer3.Add(sizer=sizer2,
border=5,
flag=wx.ALL | wx.ALIGN_CENTER)
sizer3.Add(window=buttonCount,
border=5,
flag=wx.ALL | wx.ALIGN_CENTER)
sizer3.AddStretchSpacer()
panel.SetSizer(sizer3)
panel.Layout()
下面是一个简单的应用程序,可以快速概述如何实现布局。有关说明,请参见代码注释
import wx
class TestFrame(wx.Frame):
def __init__(self, parent=None):
wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
size=wx.Size(500, 300), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
# create a flex grid sizer with 3 rows and 2 columns, 0 gaps between rows and columns
flex_grid_sizer = wx.FlexGridSizer(3, 2, 0, 0)
# make the TextCtrls expand
flex_grid_sizer.AddGrowableCol(1)
flex_grid_sizer.SetFlexibleDirection(wx.HORIZONTAL)
flex_grid_sizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_ALL)
# Start Row 1
self.static_text_1 = wx.StaticText(self, wx.ID_ANY, "Static Text", wx.DefaultPosition, wx.DefaultSize, 0)
self.static_text_1.Wrap(-1)
flex_grid_sizer.Add(self.static_text_1, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5)
self.textctrl_1 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
flex_grid_sizer.Add(self.textctrl_1, 1,
wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5)
# Start Row 2
self.stat_text_2 = wx.StaticText(self, wx.ID_ANY, "Static Text", wx.DefaultPosition, wx.DefaultSize, 0)
self.stat_text_2.Wrap(-1)
flex_grid_sizer.Add(self.stat_text_2, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5)
self.textctrl_2 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
flex_grid_sizer.Add(self.textctrl_2, 1,
wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5)
# Start Row 3
# Add a spacer to center the bytton
flex_grid_sizer.AddStretchSpacer()
self.button = wx.Button(self, wx.ID_ANY, "A Button", wx.DefaultPosition, wx.DefaultSize, 0)
flex_grid_sizer.Add(self.button, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL, 5)
self.SetSizer(flex_grid_sizer)
self.Layout()
self.Centre(wx.BOTH)
app = wx.App()
frame = TestFrame()
frame.Show()
app.MainLoop()
您遇到了什么问题或错误?没有,我只是想要一个更干净的解决方案,可能是使用FlexGridSizer。这太复杂了。这个问题不适合stackoverflow,请看,您在这里会得到更好的接待