1

私はwxPanelを持っています。ユーザーがサイズ変更できるようにするにはどうすればよいですか?ドラッグアンドドロップのサイズ変更バーを使用しますか?

必要なウィジェットは何だろうか。

ありがとうございました。

4

2 に答える 2

3

フレーム内のパネルをサイズ変更可能にするために使用できますwx.SplitterWindow(つまり、フレームを2つのサイズ変更可能なサブウィンドウに分割します)。

他のパネルのグリッド上のパネルのサイズを変更できるようにする場合は、を使用できますwx.lib.resizewidget。これはドラッグアンドドロップのようなバーを提供しますが、ウィジェットの位置を移動することはできず、サイズを変更するだけです。

wxpythonのドキュメントとデモパッケージの両方に例があります

ここに、SplitterWindowを使用した例があります(wxgladeで自動生成されたため、コードは非常に冗長です。必要に応じて簡略化できます)。

import wx  

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.window_1 = wx.SplitterWindow(self, wx.ID_ANY, style=wx.SP_3D | wx.SP_BORDER)
        self.window_1_pane_1 = wx.Panel(self.window_1, wx.ID_ANY)
        self.window_1_pane_2 = wx.Panel(self.window_1, wx.ID_ANY)

        self.__set_properties()
        self.__do_layout()

    def __set_properties(self):
        self.SetTitle("frame_1")
        self.window_1_pane_1.SetBackgroundColour(wx.Colour(255, 255, 0))
        self.window_1_pane_2.SetBackgroundColour(wx.Colour(50, 153, 204))

    def __do_layout(self):
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        self.window_1.SplitVertically(self.window_1_pane_1, self.window_1_pane_2)
        sizer_1.Add(self.window_1, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = MyFrame(None, wx.ID_ANY, "")
    app.SetTopWindow(frame_1)
    frame_1.Show()
    app.MainLoop()

ここに画像の説明を入力してください

于 2012-08-02T15:03:16.323 に答える
1

パネルはそれ自体で浮かんでいますか?あまり聞こえない!何をしているのか、何が期待どおりに機能していないのかをより詳細に説明すると、この質問に答えるのがはるかに簡単になります。

一般に、パネルはフレームの子として作成されます。パネルがフレームの唯一の子である場合、パネルはフレームとともに自動的にサイズ変更されます。それ以外の場合は、サイズ変更イベントを自分で処理する必要があります。

これまでに何を試しましたか?

于 2012-08-02T14:58:55.203 に答える