wxPython:单击组合框后显示小部件
我正在用wx.python编写一个脚本,从wx.ComboBox中选择一个值,然后,根据从ComboBox中选择的值,必须出现一些小部件(文本控件和静态文本)。 我在管理布局方面遇到了一个问题:我想将小部件放在FlexGrid框中,但由于我是wxpython的新手,所以遇到了一些问题。这是我的密码wxPython:单击组合框后显示小部件,wxpython,Wxpython,我正在用wx.python编写一个脚本,从wx.ComboBox中选择一个值,然后,根据从ComboBox中选择的值,必须出现一些小部件(文本控件和静态文本)。 我在管理布局方面遇到了一个问题:我想将小部件放在FlexGrid框中,但由于我是wxpython的新手,所以遇到了一些问题。这是我的密码 import wx,os,subprocess class ExampleFrame(wx.Frame): def __init__(self, parent): wx.Frame.__in
import wx,os,subprocess
class ExampleFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
self.panel = wx.Panel(self)
self.quote = wx.StaticText(self.panel, label="Test:")
self.result = wx.StaticText(self.panel, label="")
self.result.SetForegroundColour(wx.RED)
self.quote1 = wx.StaticText(self.panel, label="select a choice")
distros = ['Choice1', 'Choice2']
self.cb = wx.ComboBox(self.panel, choices=distros, style=wx.CB_READONLY)
self.button = wx.Button(self.panel, label="Begin")
# Set sizer for the frame, so we can change frame size to match widgets
self.windowSizer = wx.BoxSizer()
self.windowSizer.Add(self.panel, 1, wx.ALL | wx.EXPAND)
# Set sizer for the panel content
self.sizer = wx.GridBagSizer(7, 7)
self.sizer.Add(self.quote, (0, 0))
self.sizer.Add(self.result, (0, 1))
self.sizer.Add(self.quote1,(1,0))
self.sizer.Add(self.cb, (1, 1))
self.sizer.Add(self.button, (6, 0), (5, 2))
# Set simple sizer for a nice border
self.border = wx.BoxSizer()
self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5)
# Use the sizers
self.panel.SetSizerAndFit(self.border)
self.SetSizerAndFit(self.windowSizer)
self.SetSize((250, 230))
self.SetTitle('Example')
self.Centre()
# Set event handlers
self.button.Bind(wx.EVT_BUTTON, self.OnButton)
self.cb.Bind(wx.EVT_COMBOBOX, self.OnSelect)
def OnSelect(self,e):
distros = ['Choice1', 'Choice2']
i = e.GetString()
if i == distros[0]:
self.result.SetLabel("1")
self.res="1"
panel1= wx.Panel(self)
hbox = wx.BoxSizer(wx.HORIZONTAL)
fgs = wx.FlexGridSizer(3, 2, 9, 25)
lblname = wx.StaticText(self.panel, label="label1")
tc1 = wx.TextCtrl(self.panel)
fgs.AddMany([(lblname), (tc1, 1, wx.EXPAND)])
fgs.AddGrowableRow(2, 1)
fgs.AddGrowableCol(1, 1)
hbox.Add(fgs, proportion=1, flag=wx.ALL|wx.EXPAND, border=15)
panel1.SetSizer(hbox)
elif i==distros[1]:
self.result.SetLabel("2")
self.res="2"
def OnButton(self, e):
if self.res=="1":
wx.MessageBox('choice1','info',wx.OK)
elif self.res=="2":
wx.MessageBox('choice2','info',wx.OK)
app = wx.App(False)
frame = ExampleFrame(None)
frame.Show()
app.MainLoop()
我的问题在第47行和第56行之间。你能建议我如何管理布局吗。提前感谢您有很多父母/子女关系错误。 创建了一个新的面板panel1,但CTRL没有将此面板作为父面板,而是将该面板作为框架的子面板 panel1是框架的父级,这就是您希望它是框架面板的子级还是应该是框架面板的子级 panel1尚未添加到相应的大小设置中 方法SetSizerAndIt我不确定您是否需要在框架面板上使用它,仅使用SetSizer就足够了 当在初始设置之后添加大小调整器时,通常需要调用方法布局,以使大小调整器适应新控件