我不能找到一種方法,使StaticText
選擇/複製,但是這裏有2名黑客繞過這個問題。
1.複製到剪貼板上點擊鼠標右鍵,
2. TextCtrl
僞裝成StaticText
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1)
self.panel = wx.Panel(self)
self.st = wx.StaticText(self.panel, wx.ID_ANY, "Hello, World! Copy me with right click",pos=(5,5))
self.st.Bind(wx.wx.EVT_RIGHT_DOWN,self.ShowPopup)
self.tc = wx.TextCtrl(self.panel, wx.ID_ANY, "Paste here", pos=(5,30),size=(300,20))
self.tc2 = wx.TextCtrl(self.panel, wx.ID_ANY,"TextCtrl masquerading as StaticText - Select me",style=wx.TE_READONLY|wx.NO_BORDER,pos=(5,60),size=(300,20))
self.tc2.SetBackgroundColour(self.panel.GetBackgroundColour())
self.Show()
def ShowPopup(self,event):
popmenu = wx.Menu()
popmenu.Append(1, "Copy this text to clipboard")
popmenu.Bind(wx.EVT_MENU, self.Copy)
self.panel.PopupMenu(popmenu)
popmenu.Destroy()
def Copy(self,event):
clipdata = wx.TextDataObject()
text = self.st.GetLabelText()
clipdata.SetText(text)
wx.TheClipboard.Open()
wx.TheClipboard.SetData(clipdata)
wx.TheClipboard.Close()
app = wx.App()
frame = MyFrame()
app.MainLoop()
謝謝羅爾夫。我發現在某些情況下使用'HtmlWindow'而不是'StaticText'可能是一種解決方法。 –
我很好奇。我似乎無法獲得'HtmlWindow'來允許在Linux上進行選擇。也許你應該自我回答。 –
我會考慮如果a)沒有人會提出替代方案,b)我已經獲得了更多的經驗。我還沒有弄清楚哪些組件可以在哪裏使用,哪些不可以。 –