wxpythonグリッドサイザー - 空のセルを扱う
-
27-10-2019 - |
質問
私はGUIプログラミングに最初の進出を行っており、WXPythonを把握しようとしています。私は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番目のセルに置かれているからです。
これを扱う標準的な方法は何ですか?空のセルを埋めるために、ある種のダミーウィジェットを入れますか?もしそうなら、どのウィジェット?それとも、間違った種類のサイザーを使用していますか?
ありがとう!
解決
あなたが言ったように...ダミーウィジェット(空白の静的テキスト)を追加するとうまく機能します。複数の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) ] )
他のヒント
私は使用に精通しています (0,0)
これは、サイザーに伸縮性のサイズを追加することを意味します。したがって、次のような単一のオブジェクトを作成します empty_cell = (0,0)
そして、固執します empty_cell
あなたのサイザーでその空のスペースが必要な場所では(たとえば、wx.statictextが受け入れられた答えで使用されています)。
所属していません StackOverflow