0

ここでエラーを再現しました。

import wx
import debug

class MyFrame(wx.Frame):


    def __init__(self, parent):

        wx.Frame.__init__(self, parent, -1, "Test")
        self.SetSize((600,500))

        vbox = wx.BoxSizer(wx.VERTICAL)
        toolbar = wx.ToolBar(self, -1, style=wx.TB_HORIZONTAL | wx.NO_BORDER)
        toolbar.Realize()
        vbox.Add(toolbar, 0, border=5)

app = wx.App(0)

frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()

app.MainLoop()

ここで、この行を追加してテキスト コントロールを追加します。

self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)

ツールバーの上に表示されます。私はドキュメントを読み、いくつかのチュートリアルに従いましたが、それでも概念を完全に理解することはできません. どうすれば私が望むものを達成できますか? テキスト コントロールをツールバーの下に表示し、残りのスペースに合わせたいと思います。

4

2 に答える 2

1

実際の問題コードを見ないと、確かなことはわかりませんが、あなたがこれを望んでいることは間違いありません。

vbox.Add(self.control)

または、TextCtrlが 内に組み込まれていない場合は__init__、 を作成しself.vbox.Add、もちろんvbox参照を に変更__init__self.vboxます。

ドキュメントからの引用:

ボックスサイザーの背後にある基本的な考え方は、ほとんどの場合、ウィンドウはかなり単純な基本的なジオメトリで、通常は行または列、またはいずれかのネストされた階層でレイアウトされるということです。wx.BoxSizer は、コンストラクターに渡された方向パラメーターに応じて、単純な行または列にアイテムを配置します。

これはまさにあなたが望むものです — を のTextCtrl下に垂直に配置したいのですToolbar。両方を同じ に入れるとBoxSizer、これは自動的に行われます。

しかし、 を にTextCtrl直接Frame入れ、さらにBoxSizerをそのToolbar中に入れたFrame場合、 内にコントロールを配置する方法を wx に伝えていませんFrame

于 2013-05-16T18:17:28.853 に答える