Python 使用wx.BoxSizer定位按钮
我用wxpython3.0.2.0版本测试wx.BoxSizer 这就是我喜欢做的: 我将创建一个框架,包括一个带有4个按钮的面板 我希望第一个按钮位于屏幕的左上角,第二个按钮位于屏幕的右上角,第三个按钮位于屏幕的左下角,第四个按钮位于屏幕的右下角 我在下面向您提交我的代码 你能告诉我它是否正确吗 先谢谢你Python 使用wx.BoxSizer定位按钮,python,wxpython,Python,Wxpython,我用wxpython3.0.2.0版本测试wx.BoxSizer 这就是我喜欢做的: 我将创建一个框架,包括一个带有4个按钮的面板 我希望第一个按钮位于屏幕的左上角,第二个按钮位于屏幕的右上角,第三个按钮位于屏幕的左下角,第四个按钮位于屏幕的右下角 我在下面向您提交我的代码 你能告诉我它是否正确吗 先谢谢你 # -*- coding: utf-8 -*- import wx class MyFrame(wx.Frame): def __init__(self): wx
# -*- 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()
我想我找到了在面板中定位按钮的方法 我只是使用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()
您可以这样做,也可以从sizer中调用
AddStretchSpacer
。另一种方法是使用GridSizer。