0

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

  1. 将文本字段设为只读,这样任何人都无法输入。
  2. 通过按钮事件将文本附加到字段
  3. 如果按下了错误的按钮并附加了错误的值,请按右键覆盖文本字段。

我认为这不会起作用,因为我的文本字段已经是只读格式。有没有办法动态更改样式标志或我能做什么?

换句话说,我如何覆盖只读字段的值?

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()

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

4

1 回答 1

0

根据文档wx.TE_READONLY使 TextCtrl 中的文本不可用户编辑;这并不禁止在程序中更改文本。考虑这个例子:

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()
于 2013-05-28T07:08:24.687 回答