0

パネルにコンテンツを含むパネルを作成する必要があり、パネルの作成後にサイズを変更する必要があります。パネルのサイズは子コンテンツによって異なります。子コンテンツを作成するときは、親パネルを指定する必要があります。鶏と卵の問題のように。したがって、パネルとそのコンテンツを作成し、コンテンツに基づいてパネルのサイズを変更する必要があります...

そこで、パネルが 50 x 50 で始まるモックアップ コード例を作成し、そのサイズで作成した後、代わりに 400 x 400 にしたいと思います。しかし、これをコンピューターで実行すると、 50 x 50 として参照してください。 SetSize((400, 400)) は効果がありません!

これを修正して、サイザーを適用した後に SetSize を有効にするにはどうすればよいですか? どんな助けでも大歓迎です...

import wx

class MainFrame(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self, None, id = -1, title = 'Hello, World!', size = (500, 500))

        self.__myPanel = wx.Panel(self, size = (50, 50), style = wx.SIMPLE_BORDER)

    def test(self):

        self.__myPanel.SetSize((400, 400))

        vertBoxSizer = wx.BoxSizer(wx.VERTICAL)

        vertBoxSizer.AddSpacer((0, 10))
        vertBoxSizer.Add(self.__myPanel, 0, wx.ALL, 0)

        self.SetSizer(vertBoxSizer)

        self.Layout()

if __name__ == '__main__':
    app = wx.App()

    frame = MainFrame()    
    frame.test()

    frame.Show(True)
    app.MainLoop()

    print 'Exiting...'
4

2 に答える 2

0

ウィンドウとサイザーは親子関係がないため、ニワトリとタマゴはありません。サイザーは、ウィンドウのサイズ変更に使用される非常に優れたツールです (ウィンドウではありません!)。

パネルがフレームの唯一の子である場合、サイザーは必要ありません。パネルは、親フレームのクライアント領域に合わせてサイズ変更されます。

サイザーが必要なときにサイザーを設定したウィンドウのサイズを変更したい場合 (おそらく、サイザーによってサイズが管理されているパネルで SetSize() を使用したため)、self.Fit()test()で Fit() を呼び出すだけです。関数。

ウィンドウのサイズ設定については、公式ドキュメントを読むことをお勧めします

于 2017-03-23T00:25:38.140 に答える