wxpython:使用sizer对中按钮

也许主题应该是如何给尺码添加背景色,但无论如何……
谁能帮帮我,我需要有"按钮的背景颜色",例如蓝色和红色,然后使用尺码来居中按钮…如果我能为boxsizer=p设置背景色,这项任务就会容易得多。
所以,请试着在不去除红色和蓝色背景的情况下,将这些按钮放在尺码的中央

选择 | 换行 | 行号
  1. import wx
  2.  
  3. class MyFrame(wx.Frame):
  4.    def __init__(self):
  5.       wx.Frame.__init__(self, None, id=-1, size=(300,150))
  6.  
  7.       frame_panel = wx.Panel(self, -1)
  8.  
  9.       button1_panel = wx.Panel(frame_panel, -1) #panel for button1
  10.       button1_panel.SetBackgroundColour('BLUE')
  11.  
  12.       button2_panel = wx.Panel(frame_panel, -1) #panel for button2
  13.       button2_panel.SetBackgroundColour('RED')
  14.  
  15.       button1 = wx.Button(button1_panel, id=-1, label="button1", size=(80,20))
  16.       button2 = wx.Button(button2_panel, id=-1, label="button2", size=(80,20))
  17.  
  18.       button1_sizer = wx.BoxSizer(wx.HORIZONTAL)     #add button1 to sizer
  19.       button1_sizer.Add(button1, 0, wx.ALIGN_CENTER)
  20.       button2_sizer = wx.BoxSizer(wx.HORIZONTAL)     #add button2 to sizer
  21.       button2_sizer.Add(button1, 0, wx.ALIGN_CENTER)
  22.  
  23.       button1_panel.SetSizer(button1_sizer)          #set sizers for panel
  24.       button2_panel.SetSizer(button2_sizer)
  25.  
  26.       hbox = wx.BoxSizer(wx.HORIZONTAL)              #add panels to "main sizer"
  27.       hbox.Add(button1_panel, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL)
  28.       hbox.Add(button2_panel, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL)
  29.  
  30.       frame_panel.SetAutoLayout(True)
  31.       frame_panel.SetSizer(hbox)
  32.       frame_panel.Layout()
  33.  
  34. app = wx.PySimpleApp()
  35. MyFrame().Show()
  36. app.MainLoop()
  37.  
  38.  

如果你想从"开始"开始,这里的代码没有背景颜色,只需在这里插入第一个例子中的颜色(并使用SIZER)

选择 | 换行 | 行号
  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3.  
  4. import wx
  5.  
  6. class MyFrame(wx.Frame):
  7.    def __init__(self):
  8.       wx.Frame.__init__(self, None, id=-1, size=(300,150))
  9.  
  10.       frame_panel = wx.Panel(self, -1)
  11.  
  12.       button1 = wx.Button(frame_panel, id=-1, label="button1", size=(80,20))
  13.       button2 = wx.Button(frame_panel, id=-1, label="button2", size=(80,20))
  14.  
  15.       hbox = wx.BoxSizer(wx.HORIZONTAL)
  16.       hbox.Add(button1, 1, wx.ALIGN_CENTER|wx.ALL, 25)
  17.       hbox.Add(button2, 1, wx.ALIGN_CENTER|wx.ALL, 25)
  18.  
  19.       frame_panel.SetAutoLayout(True)
  20.       frame_panel.SetSizer(hbox)
  21.       frame_panel.Layout()
  22.  
  23. app = wx.PySimpleApp()
  24. MyFrame().Show()
  25. app.MainLoop()
  26.  
# 回答1


我注意到您在名为Frame_Panel的面板上设置了SIZER。如果框架有两个面板Frame_Panel_1和Frame_Panel_2,每个面板都有一个按钮,该怎么办?

标签: python

添加新评论