【问题标题】:wxPython - wx.TextCtrl - forcing styleswxPython - wx.TextCtrl - 强制样式
【发布时间】:2012-12-01 13:41:08
【问题描述】:

只是一个关于 wx.TextCtrl 元素的简单问题。 我在应用程序上有这个文本字段,用户可以在其中添加一个字符串。 我想要一个带有红色文本的文本字段。 所以我生成了这段代码:

self.hRepositoryTextfield = wx.TextCtrl(self.hPanel)
self.hRepositoryTextfield.SetDefaultStyle(wx.TextAttr(wx.RED))

如果用户在此文本字段上复制带有应用字体的字符串(例如黑色字符串或具有特定字体的字符串)红色,则无论如何默认样式都不会受到尊重。 我希望我为我的 wx.TextCtrl 决定的样式总是根据我的设置强制执行。 我能怎么做?

提前谢谢你

【问题讨论】:

    标签: python styles wxpython textctrl wx.textctrl


    【解决方案1】:
    self.hRepositoryTextfield.SetForegroundColor(wx.RED)
    

    应该可以工作....

    【讨论】:

    • mac osx 10.5.8 / python 2.7 / wx 2.8
    • 哦,我在 Windows 上...不确定我是否认为它可以在 Mac 上工作,但猜不出来:/
    【解决方案2】:

    SetForegroundColor 可能在一个操作系统上工作,而不是在另一个操作系统上工作。这取决于本机小部件。我会将 TextCtrl 的样式标志设置为 wx.TE_RICH。查看 wxPython 演示以获取示例。您甚至可以使用 HTMLCtrl 的 StyledTextCtrl 或 FancyText。

    【讨论】:

    • +1 只是因为 Mike 比 SO 上的其他任何人都更了解他的 wxPython ...
    • 我是 python 的新手,很抱歉我的问题,但我不明白@mike-driscoll 我应该如何处理 wx.TE_RICH 标志。 self.hRepositoryTextfield = wx.TextCtrl(self.hPanel, style=wx.TE_RICH) self.hRepositoryTextfield.SetDefaultStyle(wx.TextAttr(wx.RED)) 是我的新命令,但是如果我在我的 TextCtrl 上复制一些具有其他字体或样式的文本,它们将不会像我期望的那样显示为红色。我会尝试 FancyText 或您的其他建议。
    • 还有一个问题。有没有办法写像self.hRepositoryTextfield.Bind(wx.EVT_????, self.setMyDefaultStyle) 这样的东西,因为我不明白是否有 wx.TextCtrl 更改的事件
    • wxPython 演示展示了如何做到这一点。当您创建文本控件时,您将 style=wx.TE_RICH 传递给它。然后使用 SetStyle 方法将一串文本更改为不同的颜色。
    • 我不知道wxPython Demo包的存在...非常感谢,如果我有任何问题我会告诉你,否则,祝大家编程愉快。
    【解决方案3】:

    我是这样解决问题的:

    在代码的第一部分中,它定义了我的文本字段样式...

    self.hRepositoryTextfield.SetStyle(0, len(self.hRepositoryTextfield.GetValue()), wx.TextAttr(wx.RED))
    self.hRepositoryTextfield.SetFont(self.hFontLabel)
    self.hRepositoryTextfield.Bind(wx.EVT_TEXT, self.forceDefaultStyle)
    

    ...然后我将每个文本更改绑定到我的强制样式函数:

    def forceDefaultStyle(self, event):
        hEventObject = event.GetEventObject()
        hEventObject.SetStyle(0, len(self.hRepositoryTextfield.GetValue()), wx.TextAttr(wx.RED))
        hEventObject.SetFont(self.hFontLabel)
    

    它有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多