wx.TextCtrl超链接实现demo;
直接看代码,可以直接运行。
import wx import webbrowser class MyFrame(wx.Frame): def __init__(self): super().__init__(parent=None, title='wx.TextCtrl超链接实现demo', size=(300, 200)) panel = wx.Panel(self) #注意这里的style决定超链接是否生效,wx.TE_AUTO_URL自动识别文本内容是否是web地址 # 创建 TextCtrl 控件 self.textCtrl = wx.TextCtrl(panel, -1,size=(250,-1), style=wx.TE_READONLY|wx.TE_AUTO_URL|wx.TE_RICH|wx.BORDER_NONE) # 设置超链接属性 attr = wx.TextAttr() attr.SetFontUnderlined(True) attr.SetTextColour(wx.BLUE) self.textCtrl.SetDefaultStyle(attr) # 在 TextCtrl 中添加超链接 self.url = 'https://i.cnblogs.com/posts?cateId=2099344&pageSize=60' #这里注意,并非text这个表达式产生了超链接,主要是放入的self.url是一个web地址, #会被wx.TextCtrl控件的wx.TE_AUTO_URL自动识别到。 text = 'Please click this link: {}' self.textCtrl.SetValue(text.format(self.url)) # 绑定 EVT_TEXT_URL 事件 #绑定触发事件,是点击超链接后是否跳转的关键 self.Bind(wx.EVT_TEXT_URL, self.onLinkClicked, self.textCtrl) # 布局 sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.textCtrl, 1, wx.EXPAND|wx.ALL, 10) panel.SetSizer(sizer) def onLinkClicked(self, event): #这里做了一个鼠标左键按下判断(不判断会出现鼠标指向超链接就疯狂跳转) state = wx.GetMouseState() if state.LeftIsDown(): #这里用的是webbrowser的open() #也可以用os的os.startfile(url)达到同样的效果; webbrowser.open(self.url) if __name__ == '__main__': app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
标签:__,URL,demo,self,超链接,TextCtrl,wx From: https://www.cnblogs.com/babashi9527/p/17248259.html