动态更改wx.TextCtrl样式标志

时间:2013-05-28 06:23:42

标签: python wxpython wxwidgets

我的项目中有这个代码。我想做的是:

  1. 将文本字段设为只读,以便没有人可以输入。
  2. 通过按钮事件
  3. 将文本附加到字段
  4. 如果按下错误按钮并附加了错误的值,请按右按钮覆盖文本字段。
  5. 我认为这不会起作用,因为我的文本字段已经是只读格式。 有没有办法动态更改样式标志或我能做什么?

    换句话说,我怎样才能覆盖只读字段的值?

    def trig_dir(e):
            self.text.Clear()
            dialog = wx.DirDialog(None, "Choose a directory:",style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
    
            if dialog.ShowModal() == wx.ID_OK:
                global boxstat
                boxstat+=dialog.GetPath()
    
            self.text.AppendText(boxstat)
            dialog.Destroy()
    

    如果用户改变主意,此功能将再次运行。

1 个答案:

答案 0 :(得分:0)

根据docswx.TE_READONLY使TextCtrl中的文字不是用户可编辑的;这 not 禁止在程序中更改文本。考虑一下这个例子:

import wx

class Frame(wx.Frame):
    def __init__(self, title):
        wx.Frame.__init__(self, None, title=title, size=(350,200))
        self.text = wx.TextCtrl(self, -1, style=wx.TE_READONLY)
        self.btn1 = wx.Button(self, -1, "Right button")
        self.btn2 = wx.Button(self, -1, "Wrong button")
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.text, 1, wx.ALL | wx.EXPAND, 5)
        sizer.Add(self.btn1, 1, wx.ALL | wx.EXPAND, 5)
        sizer.Add(self.btn2, 1, wx.ALL | wx.EXPAND, 5)
        self.SetSizer(sizer)
        self.Fit()

        self.Bind(wx.EVT_BUTTON, self.RightButtonPress, self.btn1)
        self.Bind(wx.EVT_BUTTON, self.WrongButtonPress, self.btn2)

    def RightButtonPress(self, evt):
        self.text.AppendText("Right!")

    def WrongButtonPress(self, evt):
        self.text.Clear()
        self.text.AppendText("Press again!")

app = wx.App()
top = Frame("Hello World")
top.Center()
top.Show()
app.MainLoop()