1

だから、私は wxPython を使用してプログラムを作成しようとしています。これには、ユーザーがテキストボックスにデータを入力するタブを持つノートブックがあります。これは物理関連のプロジェクトのためのものなので、入力する単位を表示した後に各テキストボックスに「単位」ラベルを付けたいと思います。問題は、プログラムを実行すると、左上隅に黒い四角形が表示されることです各 textctrl は、ユニットが含まれるラベルのサイズです。ブラック ボックスは、次のいずれかの直後に永久に消えます。

  • textctrl の上でタブを押します
  • カーソルを textctrl に移動します
  • ノートブックのタブを切り替える
  • textctrl が縮小する必要があるまで、ウィンドウのサイズを変更します。

機能的にはすべて正常に動作します。起動時に黒い四角形を取り除きたいだけです。

これは私のコードです:

#! usr/bin/python

import wx

class MainWindow(wx.Frame):
    def __init__(self, title):
        wx.Frame.__init__(self, None, title=title, size=(400,300))
        self.make_gui()
        self.Show()

    def make_gui(self):
        self.panel=wx.Panel(self,wx.ID_ANY)
        sizer=wx.BoxSizer(wx.VERTICAL)
        ins=self.gui_inputs()
        sizer.Add(ins)
        self.panel.SetSizer(sizer)

    def gui_inputs(self):
        sizer=wx.BoxSizer(wx.HORIZONTAL)
        simpleinputs=(("Page 1",(("Name",None),("Item","in"))),("sec page",tuple()))
        simple=self.gui_inputs_make_simple(simpleinputs)
        sizer.Add(simple)
        return sizer

    def gui_inputs_make_simple(self,simpleinputs):
        sizer=wx.BoxSizer(wx.VERTICAL)
        notebook=wx.Notebook(self.panel)
        for tab in simpleinputs:
            pan=wx.Panel(notebook,wx.ID_ANY)
            siz=wx.BoxSizer(wx.VERTICAL)
            for item in tab[1]:
                it=self.gui_inputs_make_labeled_unitinput(pan,item[0],item[1])
                siz.Add(it)
            pan.SetSizer(siz)
            notebook.AddPage(pan,tab[0])
        sizer.Add(notebook)
        return sizer

    def gui_inputs_make_labeled_unitinput(self,par,label='',units='',validatenumber=False):
        sizer=wx.BoxSizer(wx.HORIZONTAL)
        lbl=wx.StaticText(par,label=label+':')
        sizer.Add(lbl)
        edit=wx.TextCtrl(par)
        sizer.Add(edit)
        if units!=None:
            unit=wx.StaticText(par,label=units)
            sizer.Add(unit)
        return sizer

app = wx.App(False)
frame = MainWindow("GUI")
app.MainLoop()

これは私が得るもののスクリーンショットです:

ここに画像の説明を入力

以下は、黒い四角形を消すことができた方法です(しかし、必要なことをさせてくれるものはありませんでした):

単位を入れるコードを削除すると、機能します。単位フィールドからテキストを削除すると、機能します。タブが 1 つしかない場合は機能します。

なぜこれが起こっているのか誰かが教えてくれるなら、私は大いに感謝しています.

前もって感謝します!

4

1 に答える 1

1

これは興味深いものでした:

インスタンスのブラック ボックスはTextCtrl、サイザー カスケードが適切に設定されるとすぐに消えます。これを行うには、次の方法でメインのレイアウトを更新しますsizer

sizer.Layout()

また

sizer.Fit(self)

メソッドの最後にmake_gui

これは私にとってはうまくいきますが、もちろん TextCtrl が最初から黒のままである理由を説明していません。

于 2014-06-18T15:25:16.017 に答える