Hello,
I am new to Python. I am learning boxsizer. I want to put two buttons on
my panel. One at top right corner and one at bottom right corner. How do
I achieve this?
Thanks
Hello,
I am new to Python. I am learning boxsizer. I want to put two buttons on
my panel. One at top right corner and one at bottom right corner. How do
I achieve this?
Thanks
Try this:
''' wxBoxSizer101.py
button1 at upper right corner
button2 at lower right corner
'''
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, mytitle, mysize):
wx.Frame.__init__(self, parent, wx.ID_ANY, mytitle, size=mysize)
self.create_widgets()
def create_widgets(self):
self.button1 = wx.Button(self, wx.ID_ANY, label='Button1')
self.button2 = wx.Button(self, wx.ID_ANY, label='Button2')
# use a box sizer to lay out widgets
sizer_v = wx.BoxSizer(wx.VERTICAL)
# Add(widget, proportion, flag, border)
# border is to the left side
sizer_v.Add(self.button1, 0, flag=wx.LEFT, border=200)
# this adds a spacer (w, h)
# here only the height is important
sizer_v.Add((0, 200), proportion=0, flag=wx.EXPAND)
sizer_v.Add(self.button2, 0, flag=wx.LEFT, border=200)
self.SetSizer(sizer_v)
app = wx.App(0)
mytitle = "wx.BoxSizer Test101"
width = 300
height = 290
# create a MyFrame instance and show the frame
MyFrame(None, mytitle, (width, height)).Show()
app.MainLoop()
Thanks for your reply. It works well for the window size mentioned. But if I maximize the window, the buttons remain at the same position.
Thanks again.
I figured it out. Thanks for your help.
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self,parent)
vbox1 = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
mainbox = wx.BoxSizer(wx.VERTICAL)
top_btn = wx.Button(self, wx.ID_ANY, "TOP")
vbox1.Add(top_btn, 0, wx.ALL | wx.ALIGN_RIGHT, 1)
bot_btn = wx.Button(self, wx.ID_ANY, "BOTTOM")
hbox1.Add((0,0), 1, wx.ALL | wx.EXPAND, 5)
hbox1.Add(bot_btn, 0, wx.ALL | wx.ALIGN_BOTTOM, 5)
mainbox.Add(vbox1, 0, wx.EXPAND)
mainbox.Add((0,0), 1, wx.ALL|wx.EXPAND)
mainbox.Add(hbox1, 0, wx.EXPAND)
self.SetSizer(mainbox)
mainbox.Fit(self)
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Button Box")
panel1 = MyPanel(self)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame_1 = MyFrame()
app.MainLoop()
This fundamental wxPython application illustrates the five simple steps you have to complete for every wxPython program you develop:
Import the integral wxPython package.
Subclass the wxPython software class.
Define an application initialization method.
Create an application category instance.
Enter the application's essential event loop.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.