4

私は GUI プログラミングへの最初の進出を試みており、wxPython を理解しようとしています。wxGlade を使用しようとしていますが、少しバグがあることがわかりました。

GridSizerを使ってレイアウトを作っています。

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

これは私が目指しているレイアウトです (wxGlade スクリーンショット):

wxGlade レイアウトのスクリーンショット

問題は、私がこれを得るコードを生成することです:

ここに画像の説明を入力

    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)

どうやら、「下へ」ボタンが 8 番目ではなく 7 番目のセルに配置されているためです。

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

ありがとう!

4

2 に答える 2

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) ] )
于 2011-01-29T23:59:23.107 に答える