我使用wxPython 3.0.2.0发布测试wx.BoxSizer。
这就是我喜欢做的事情:
我会创建一个包含带4个按钮的面板的框架。
我希望第一个按钮位于屏幕的左上角,第二个,右上角,第三个按钮位于左下方,第四个位于屏幕右下角。
我在下面提交了我的代码。
你能告诉我它是否正确吗?
提前谢谢。
# -*- coding: utf-8 -*-
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent = None, title="Test of BoxSizer")
vbox = wx.BoxSizer(wx.VERTICAL)
hbox=wx.BoxSizer(wx.HORIZONTAL)
hbox1=wx.BoxSizer(wx.HORIZONTAL)
self.panel=wx.Panel(self)
self.btn1=wx.Button(self.panel, label="Button 1")
self.btn2=wx.Button(self.panel, label="Button 2")
self.btn3=wx.Button(self.panel, label="Button 3")
self.btn4=wx.Button(self.panel, label="Button 4")
hbox.Add(self.btn1, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
hbox.Add((0,0), proportion=4, flag=wx.EXPAND)
hbox.Add(self.btn2, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
hbox1.Add(self.btn3, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
hbox1.Add((0,0), proportion=4, flag=wx.EXPAND)
hbox1.Add(self.btn4, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
vbox.Add(hbox, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5)
#vbox.Add((0,0), proportion = 1, flag=wx.EXPAND)
vbox.Add(hbox1, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5)
self.panel.SetSizer(vbox)
vbox.SetSizeHints(self)
self.Centre()
if __name__ == '__main__':
app = wx.App(redirect = False)
frame = MyFrame()
frame.Show(True)
app.MainLoop()
答案 0 :(得分:0)
我想我找到了解决我在面板中定位按钮问题的方法。
我只是使用了sizer wx.BoxSizer的Add方法的比例参数。
我在下面提交了更正后的代码,希望这能帮助像我这样的其他新手。
# -*- coding: utf-8 -*-
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent = None, title="Test of BoxSizer")
vbox = wx.BoxSizer(wx.VERTICAL)
hbox=wx.BoxSizer(wx.HORIZONTAL)
hbox1=wx.BoxSizer(wx.HORIZONTAL)
self.panel=wx.Panel(self)
self.btn1=wx.Button(self.panel, label="button 1")
self.btn2=wx.Button(self.panel, label="button 2")
self.btn3=wx.Button(self.panel, label="button 3")
self.btn4=wx.Button(self.panel, label="button 4")
hbox.Add(self.btn1, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
hbox.Add((0,0), proportion=4, flag=wx.EXPAND)
hbox.Add(self.btn2, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
hbox1.Add(self.btn3, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
hbox1.Add((0,0), proportion=4, flag=wx.EXPAND)
hbox1.Add(self.btn4, proportion = 1, flag=wx.CENTER | wx.ALL, border=5)
vbox.Add(hbox, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5)
#vbox.Add((0,0), proportion = 4, flag=wx.EXPAND)
vbox.Add(hbox1, proportion = 1, flag=wx.CENTER | wx.ALL, border = 5)
self.panel.SetSizer(vbox)
vbox.SetSizeHints(self)
self.Centre()
if __name__ == '__main__':
app = wx.App(redirect = False)
frame = MyFrame()
frame.Show(True)
app.MainLoop()