【问题标题】:Select and copy text from dialog in wxPython从 wxPython 中的对话框中选择和复制文本
【发布时间】:2011-03-11 23:55:42
【问题描述】:

我有一个 wxPython 应用程序,在这个应用程序中,我可以从各种框架中选择和复制文本,但我不能从对话框中这样做。有没有办法做到这一点?

我知道我可以通过在对话框中放置某种 TextCtrl 来做到这一点,但我希望能够从一个标准外观的对话框中做到这一点。

编辑:

抱歉,我应该更具体一些。我无法在 Windows Vista 或 Mac 下从 wx.MessageBox 中选择文本(无法访问 Linux 来尝试)。以下是创建消息框的调用示例:

wx.MessageBox(str(msg), "Could not load ballots", wx.OK|wx.ICON_ERROR)

我无法选择消息框的文本。

【问题讨论】:

  • 当您说“从各种框架复制文本”等时,我不清楚您的意思。例如,当我运行演示(使用 Linux)时,我可以在消息中复制发布的文本框或关于框,它们都是对话框,并将复制的内容粘贴到另一个程序中。您要复制什么文字?
  • 即使您无法在 Windows 上突出显示文本,您仍然可以按 Ctrl-C 将对话框的全部内容复制到剪贴板。如果您需要比这更具体的内容,您可能必须创建一个具有相同外观的自定义对话框。 wx.MessageBox 只是对平台原生消息框函数的调用。

标签: select text dialog wxpython copy


【解决方案1】:

如果您像这样制作自定义 MessageBox,它会显示为静态文本,直到您单击文本:

class MessageBox(wx.Dialog):
    def __init__(self, parent, title):
        wx.Dialog.__init__(self, parent, title=title)
        text = wx.TextCtrl(self, style=wx.TE_READONLY|wx.BORDER_NONE)
        text.SetValue("Hi hi hi")
        text.SetBackgroundColour(wx.SystemSettings.GetColour(4))
        self.ShowModal()
        self.Destroy()

我只在 windows 上测试过,你可能需要为你的操作系统调整颜色。

【讨论】:

  • text.SetBackgroundColour(self.GetBackgroundColour()) 可能更合适。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
相关资源
最近更新 更多