我正在尝试学习wxpython来在python中进行图形界面。 我想要的界面应该有2个静态框和一个按钮,它应该在第一个静态框中。我想要这样的东西:
|----------------------------------------------|
| |
| ##### |
| |
| |
|----------------------------------------------|
| |
| |
| |
|----------------------------------------------|
我不知道为什么我会在左上角找到按钮,我怀疑我将其配置错误,这就是为什么它不在静态框中。我得到这样的东西:
######-----------------------------------------|
| |
| |
| |
| |
|----------------------------------------------|
| |
| |
| |
|----------------------------------------------|
我的代码是:
class Frame(wx.Frame):
def __init__(self, title):
wx.Frame.__init__(self, None, title=title, pos=(150,150), size=(600,600))
# Defining panel
panel = wx.Panel(self,-1)
# Elements of the frame
staticBoxUno = wx.StaticBox(panel, -1, 'Uno:', pos=wx.Point(-1, -1), size=wx.Size(600, 150), style=0)
staticBoxUno.SetOwnFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'MS Shell Dlg'))
staticBoxDos = wx.StaticBox(panel, -1, 'Dos:', pos=wx.Point(-1, -1), size=wx.Size(600, -1), style=0)
staticBoxDos.SetOwnFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False, 'MS Shell Dlg'))
buttonUno = wx.Button(panel, -1, "OK")
#Initialization Sizers
boxMadre = wx.BoxSizer(wx.VERTICAL)
boxMadre.AddSpacer(5)
boxMadre.Add(staticBoxUno, 0, wx.EXPAND|wx.ALL, 0)
boxMadre.AddSpacer(5)
boxMadre.Add(staticBoxDos, 1, wx.EXPAND|wx.ALL, 0)
staticBoxUnoSizer = wx.StaticBoxSizer(staticBoxUno, wx.VERTICAL)
staticBoxUnoSizer.Add(buttonUno, -1, wx.EXPAND | wx.ALL, 5)
panel.SetSizer(boxMadre)
panel.Layout()
app = wx.App(redirect=True) # Error messages go to popup window
top = Frame("<<project>>")
top.Show()
app.MainLoop()
我想问题是当我尝试将按钮添加到StaticBoxUno但我不确切知道什么是失败时
非常感谢! 巴勃罗
答案 0 :(得分:0)
按如下方式更改代码:
# …
buttonUno = wx.Button(panel, -1, "OK")
staticBoxUnoSizer = wx.StaticBoxSizer(staticBoxUno, wx.VERTICAL)
# use 0 instead of -1 as proportion in sizer
staticBoxUnoSizer.Add(buttonUno, 0, wx.EXPAND|wx.ALL, 5)
# …
# add sizer instead of StaticBox!
boxMadre.Add(staticBoxUnoSizer, 0, wx.EXPAND|wx.ALL, 0)