0

水平のボックスの中に配置されたtextctrlが欲しいです。私はこのコードを使用してこのATMを作成しました:

self.myTextCtrl = wx.TextCtrl(panel、-1、 "bleh")

self.vbox.Add(self.myTextCtrl、proportion = 1)

このコードは私のラベルを画面に印刷します。

ただし、その上にラジオボタンがあり(デフォルトはfalse)、trueに設定すると、ボックスが表示されます。self.myTextCtrl.Hide()を呼び出そうとしました

(非表示は、無線ボタンの切り替えによってトリガーされたイベントで発生します)

しかし、これにより、textctrlを後でロードできなくなります...

Some1は、あなたがそれを嫌うので、ボックスが存在しない状態であなたのプログラムをコンパイルするwxpythonと関係があると私に言いました、しかし私はそれに関する情報をウェブ上で見つけることができません。

助けてください。

4

1 に答える 1

1

私は手早く汚い例を作りました。ラジオ ボタンは、グループで使用しない限り、一度 True に設定すると「チェックを外す」ことができないため、CheckBox ウィジェットを使用した例も含めました。また、他のウィジェットのイベントを開始せずにフォーカスを受け入れるために必要なものとして、空白のテキスト コントロールを追加しました。

import wx

########################################################################
class MyPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)

        txt = wx.TextCtrl(self)
        radio1 = wx.RadioButton( self, -1, " Radio1 ")
        radio1.Bind(wx.EVT_RADIOBUTTON, self.onRadioButton)
        self.hiddenText = wx.TextCtrl(self)
        self.hiddenText.Hide()

        self.checkBtn = wx.CheckBox(self)
        self.checkBtn.Bind(wx.EVT_CHECKBOX, self.onCheckBox)
        self.hiddenText2 = wx.TextCtrl(self)
        self.hiddenText2.Hide()

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(txt, 0, wx.ALL, 5)
        sizer.Add(radio1, 0, wx.ALL, 5)
        sizer.Add(self.hiddenText, 0, wx.ALL, 5)
        sizer.Add(self.checkBtn, 0, wx.ALL, 5)
        sizer.Add(self.hiddenText2, 0, wx.ALL, 5)
        self.SetSizer(sizer)

    #----------------------------------------------------------------------
    def onRadioButton(self, event):
        """"""
        print "in onRadioButton"
        self.hiddenText.Show()
        self.Layout()

    #----------------------------------------------------------------------
    def onCheckBox(self, event):
        """"""
        print "in onCheckBox"
        state = event.IsChecked()
        if state:
            self.hiddenText2.Show()
        else:
            self.hiddenText2.Hide()
        self.Layout()


########################################################################
class MyFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Radios and Text")
        panel = MyPanel(self)
        self.Show()

if __name__ == "__main__":
    app = wx.App(False)
    f = MyFrame()
    app.MainLoop()
于 2012-12-05T17:03:31.750 に答える