0

ブール式評価のための学校プロジェクト用の GUI を構築しようとしています。このプログラムは文字列を入力として受け取りA^B、Grid ウィジェットを使用して GUI に真理値表を表示します。

いくつかの理由で (この記事を長くしすぎたくない)、Hide() と Show() を持っている唯一のウィジェット (グリッド) を持つパネルが必要ですが、Hide() と Show() を呼び出すたびに、パネル親パネルの左上隅に配置されます。

いくつかの写真を使用して明確にしましょう:正常に機能し、パネルが所定の位置にある

非表示にしたいパネルは、無効にした TextCtrl ウィジェットのすぐ下にある灰色のパネルで、ご覧のとおり、必要な場所に配置しました。hide() と show() の後で見てみましょう

間違った場所

これで、パネルが画面の左上隅に移動しました。

これは私がパネルを実装する方法です:

    #Answer box panel
    self.panel_resp = sp.ScrolledPanel(midPan, -1) # midpan is the parent panel (blue)
    self.panel_resp.SetBackgroundColour('#FFFFFFF')
    resp_sizer = wx.BoxSizer(wx.HORIZONTAL)
    self.panel_resp.SetSizer(resp_sizer)
    self.panel_resp.SetAutoLayout(1)
    self.panel_resp.SetupScrolling()
    self.vbox1.Add(self.panel_resp, flag=wx.EXPAND|wx.ALL,
                   border=10)
    self.vbox1.Add((-1,10))

    self.panel_resp.Hide()

ここで、「評価」ボタンをクリックするたびに、次のステートメントを作成します。

self.panel_resp.Show()

そして、そのコーナーにパネルが現れます。

なぜこれが起こっているのですか?

この投稿は非常に巨大なのでコードで埋めたくありませんでしたが、質問があれば喜んで答えます。それが唯一の重要な部分だと思うので、その部分を投稿しました。

4

1 に答える 1