2016-06-21 7 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() 

`

私は窓を使用しています、私はまた、これはpos = wx.DefaultPositionを使用してacheivedすることができますが、これを行うためのより正確なWX方法をしたいと思い、誰かがコードを検査し、私なら、私に知らせてください可能性が理解私は

+0

プラス1は一見簡単ですが、完全に簡単な質問ではありません。 – nepix32

答えて

1

GUIツールキットは、コントロールのサイズについてスマートになる傾向があり、一般的な

TNXでwxPythonを/のpythonに新しいです権利としてそれをやっている:あなたは私たちのGenButtonインスタンスの高さではなく幅(012を指定しました)。ボタンの幅を親パネルの幅に合わせると、必要なものが得られます(size=(1024, 40))。

しかし、サイザーを使用するので、これはあなたがすべきことではありません。 wx.Frameのスタイルでは、サイザーが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とセンターを作成する必要があります取得していると思う?この方法で、新しい縦型ボクサー、genbutton ID、および位置を指定して、中央ボタンの左または右のボタンを追加できますか? – Ambush

+0

サイザーを理解するには、さまざまな種類のサイザーアプリケーションについて[wxPython demo](https://wxpython.org/download.php)の例を参照してください。それはすべての異なるサイザーに関する特別なセクションを持っています。あなたはコントロールのサイズを設定することについて懸念する必要はありませんし、サイザーは仕事をすることができます。あなたのケースでは、 '' BoxSizer(wx.HORIZONTAL) ''にn個のボタンを配置し、ボタンごとに1の割合を指定します。 – nepix32

+0

これはお役に立ちました、私は私のコードが本当に論理ではなかったのを見ることができます、しかし、私はボタンの中心が私が欲しい方法を整列させるためにまだ苦労しているにもかかわらず、ボタンを地面に置いて心配しないでください。 – Ambush