首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于wxPython的版图管理

基于wxPython的版图管理
EN

Stack Overflow用户
提问于 2013-12-20 04:17:51
回答 1查看 1.3K关注 0票数 0

This new question is build on this

我在管理wxPython中的布局方面有问题。在这个程序中,我在两个布局中有两个按钮。但无论我做什么,我都不能改变这些按钮的位置或排列方式。这些按钮被固定在蓝色和黄色的布局上。

我的代码是这样的:

代码语言:javascript
复制
import wx
class myframe(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, size=(1000,700))

        self.TitlePanel = wx.Panel(self, size=(350, 400))
        self.TitlePanel.SetBackgroundColour("green")

        self.newPanel = wx.Panel(self, size=(300, 250))
        self.newPanel.SetBackgroundColour("black")
        self.newPanel.Hide()

        self.imgPanel = wx.Panel(self, size=(300, 250))
        self.imgPanel.SetBackgroundColour("red")

        self.modulePanel=wx.Panel(self, size=(350, 250))
        self.modulePanel.SetBackgroundColour("blue")

        self.TCPanel=wx.Panel(self, size=(300, 250))
        self.TCPanel.SetBackgroundColour("yellow")

        self.myGridSizer = wx.GridBagSizer(1,1)
        self.myGridSizer.SetEmptyCellSize((0, 0))
        self.myGridSizer.Add(self.TitlePanel, pos=(0, 0), span=(4,8), flag=wx.EXPAND)
        self.myGridSizer.Add(self.imgPanel, pos=(0, 10), span=(4,8), flag=wx.EXPAND)
        self.myGridSizer.Add(self.modulePanel, pos=(10, 0), span=(4,8), flag=wx.EXPAND)
        self.myGridSizer.Add(self.TCPanel, pos=(10, 10), span=(4,8), flag=wx.EXPAND)
    ############################# Add Text to 1st Panel #########################################
        self.text1 = wx.StaticText(self.TitlePanel, label="This is a test run",style=wx.ALIGN_LEFT,size=(300,-1))
        font = wx.Font(18, wx.DECORATIVE, wx.ITALIC,wx.BOLD, wx.NORMAL)
        self.text1.SetFont(font)
        self.titleSizer = wx.BoxSizer()
        self.titleSizer.Add(self.text1, flag=wx.CENTER|wx.LEFT|wx.ALIGN_RIGHT,border=10)
        self.TitlePanel.SetSizer(self.titleSizer)
    #########################################################################################
    ############################### Add Buttons in 3rd Panel ################################
        self.moduleSizer = wx.BoxSizer()
        self.button1 = wx.Button(self.modulePanel, label="Show Yellow Panel",size=(200,-1),style=wx.ALIGN_RIGHT)    
        self.moduleSizer.Add(self.button1, flag=wx.CENTER|wx.EXPAND|wx.ALIGN_RIGHT,border=10)
    #########################################################################################
        self.TCSizer=wx.BoxSizer()
        self.button2 = wx.Button(self.TCPanel, label="Bring Black Panel",size=(200,-1)) 
        self.TCSizer.Add(self.button2, flag=wx.CENTER|wx.RIGHT|wx.ALIGN_RIGHT,border=10)
    #########################################################################################
        self.SetSizer(self.myGridSizer)

        self.text1.Bind(wx.EVT_LEFT_DCLICK, self.hideMe)
        self.button1.Bind(wx.EVT_BUTTON, self.showMe)
        self.button2.Bind(wx.EVT_BUTTON, self.hideMe)

    def hideMe(self, event):
        self.TCPanel.Hide()
        self.myGridSizer.Replace(self.TCPanel, self.newPanel)
        self.newPanel.Show()
        self.Layout()

    def showMe(self, event):
        self.newPanel.Hide()
        self.myGridSizer.Replace(self.newPanel, self.TCPanel)
        self.TCPanel.Show()
        self.Layout()

if __name__ == "__main__":
    app = wx.App()
    region = myframe()
    region.Show()
    app.MainLoop()

现在,如果我可以把按钮稍微右边的布局,那将是很好的。有什么好的教程吗。请建议一下。

我想做的事:

  1. 蓝色面板中的按钮应该位于蓝色面板的中间
  2. 按钮从黄色面板将有一个缩进我想要的像素。如果我想留下一个20像素的空白,那么按钮将放在20像素后的黄色面板。

如果这是可能的话,那将是一个很大的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-22 16:58:27

  1. 要使这个按钮定位在中心,只需使用标志wx.CENTER。您还需要将此sizer设置为面板sizer。 self.moduleSizer = wx.BoxSizer(wx.VERTICAL) self.button1 = wx.Button(self.modulePanel,label=“显示黄面板”,size=(200,-1) self.moduleSizer.Add(self.button1,flag=wx.CENTER) self.modulePanel.SetSizer(self.moduleSizer) )
  2. 若要将此按钮定位在左侧,缩进为20,请使用标志wx.Left并将边框设置为20。如上所述,您还需要将这个sizer设置为面板。 self.TCSizer = wx.BoxSizer(wx.VERTICAL) self.button2 = wx.Button(self.TCPanel,label=“带来黑色面板”,size=(200,-1) self.TCSizer.Add(self.button2,flag=wx.LEFT,border=20) self.TCPanel.SetSizer(self.TCSizer) )

在结束时,init方法调用。

代码语言:javascript
复制
self.Layout()

才能让他们自己更新。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20696187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档