2016-06-21 26 views
1

我很努力地找到我GenButton對齊的答案, 我已經瀏覽了wxpython網站上的文檔,並且無法看到解決這個問題的任何選項,希望你們中的一位能指點我正確的方向,因爲我需要將我的按鈕對齊到catpanel的中心,這裏是我的代碼。GenButton對齊wxpython

import wx, os, os.path 
from wx.lib.buttons import GenButton 

class Home(wx.Frame): 
    def __init__(self, parent): 
     wx.Frame.__init__(self, parent, id=wx.ID_ANY, size=(1024, 576),style=wx.NO_BORDER) 
     self.SetBackgroundColour(wx.Colour(107, 109, 109)) 

     self.catpanel() 


    def catpanel(self): 
     homepanel = wx.Panel(self, wx.ALIGN_CENTER) 
     homepanel.BackgroundColour = (86, 88, 88) 
     homepanel.SetSize((1024, 40)) 
     GenButton(homepanel, id=wx.ID_ANY, label="Home", style=wx.NO_BORDER, size=(-1, 40)) 

     self.Centre() 
     self.Show() 

if __name__ == '__main__': 

    app = wx.App() 
    Home(None) 
    app.MainLoop() 

`

我使用Windows,我也明白這一點可以通過使用pos = wx.DefaultPosition來來達到的,但是想這樣做更準確的WX方式,可能有人檢查代碼,讓我知道,如果我我這樣做是正確,因爲我是新來的,一般

TNX的wxPython /蟒蛇

+0

加1發佈一個看似簡單但並非完全無關緊要的問題。 – nepix32

回答

1

GUI工具往往是聰明的控制大小:您指定我們GenButton實例的高度,但沒有寬度(size=(-1, 40))。如果將按鈕寬度調整爲父面板寬度,則會得到您想要的(size=(1024, 40))。

但是,這不是你應該做的,因爲你會使用sizer。 wx.NO_BORDERwx.Frame,你似乎打了另一個snafu,其中sizers不符合GenButton的預期工作。

class Home(wx.Frame): 
    def __init__(self, parent): 
     wx.Frame.__init__(self, parent, id=wx.ID_ANY, style=wx.NO_BORDER) 
     self.SetBackgroundColour(wx.Colour(107, 109, 109)) 

     homepanel = wx.Panel(self, -1) 
     sz = wx.BoxSizer(wx.VERTICAL) 
     btn = GenButton(homepanel, id=wx.ID_ANY, label="Home", style=wx.NO_BORDER, size=(-1, 40)) 
     sz.Add(btn, 0, wx.EXPAND|wx.ALL, 0) 
     # Dummy placeholder with heigth already set 
     sz.Add((-1, 400), 1) 

     homepanel.SetSizer(sz) 
     # try to uncomment next line: without resizing 
     # the window will not be layouted 
     self.SetSize((1024, -1)) 
     self.Centre() 
     self.Show() 
+0

正確的我想我看到你在得到什麼,爲了居中我的genbutton我需要創建一個垂直boxsizer和中心,然後將我的genbutton添加到我剛剛創建的垂直boxsizer?通過這種方式,我可以通過指定一個新的垂直boxsizer,genbutton id和位置來添加更多的按鈕左邊或右邊的中心按鈕? – Ambush

+0

要理解sizer,您應該查看不同種類的sizer應用程序的[wxPython demo](https://wxpython.org/download.php)示例。它有關於所有不同尺寸的特殊部分。您應該不太關心設置控制尺寸並讓sizers完成工作。在你的情況下,你會在一個''BoxSizer(wx.HORIZONTAL)''中安排n個按鈕,併爲每個按鈕指定比例1。 – nepix32

+0

這有助於thankyou,我可以看到我的代碼是不是真的在邏輯上,即使我仍然努力讓按鈕中心按我想要的方式排列,我是否理解你的意思是不要擔心窗口大小,只是擔心回合得到按鈕嗎? – Ambush