2011-01-29 23 views
4

私はGUIプログラミングに初めて着手しました。私はwxPythonを手に入れようとしています。私はwxGladeを使用しようとしていますが、それはちょっとしたバグになっています。wxPython GridSizer - 空のセルを扱います

私はGridSizerを使用してレイアウトを作成しています。

サイザーに何かを追加するたびに、次のセルに入れられるようになった。つまり、空のセルがある場合は、そのセルに何かを入力する必要があります。私は正しい?

これは私が(wxGladeのスクリーンショット)のためのつもりレイアウトです:

wxGlade layout screenshot

問題は、私はこれを得ることから、コード生成、次のとおりです。

enter image description here

grid_sizer_1 = wx.GridSizer(3, 3, 0, 0) 
    grid_sizer_1.Add(self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 0) 
    grid_sizer_1.Add(self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_right, 0, wx.ALIGN_CENTER_VERTICAL, 0) 
    grid_sizer_1.Add(self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL, 0) 

「Down」ボタンが8番ではなく7番セルに配置されているようです。

これに対処する標準的な方法は何ですか?空のセルを埋めるために何らかのダミーウィジェットを入れますか?もしそうなら、どのウィジェット?または私は間違った種類のサイザーを使用していますか?

ありがとうございます!

答えて

9

あなたが言ったように...ダミーウィジェット(空白の静的テキスト)を追加するとうまくいきます。複数のadd()の代わりにAddMany()を使用することもできます。

grid_sizer_1 = wx.GridSizer(3, 3, 0, 0) 
grid_sizer_1.AddMany([ 
    (self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL), 
    (self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL), 
    (self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL), 
    (self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL), 
    (self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL), 
    (self.button_right, 0, wx.ALIGN_CENTER_VERTICAL), 
    (wx.StaticText(self, -1, ''), 0, wx.EXPAND), 
    (self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL) ]) 
+1

「AddMany」のチップをありがとう!ダミーウィジェットとして '(0,0)'はどうですか?あなたはそれよりはるかに簡単に得ることができるとは思わない:) – Acorn

+0

笑;私はそれを読者のための練習として残しておきます。 – whitey04

+0

素敵なアイデアをありがとう。私はパネルを追加していましたが、textctrlの間にそれを数えました。私は2つのtextctrlの間を移動するように押しました。複数のタブを押してパネルをカバーする必要がありました –

2

私はサイザーに伸縮性のサイズを追加することを意味する(0,0)を使用に慣れています。したがって、empty_cell = (0,0)のような単一のオブジェクトを作成してから、サイザー内に空きスペースが必要な場所(たとえば、受け入れられた回答にwx.StaticTextが使用される)のどこかにempty_cellを貼り付けます。

関連する問題