Python GUI之如何让Label实现超链接效果
编码环境:python 2.7.6
一、超链接效果:
1>鼠标点击后能自动链接到指定文件目录
2>链接的text下方要有下划线显示
二、如何实现
Label不像Button自带有command属性,也没有Combobox的postcommand属性,更没有什么所谓的下滑线属性,那该如何是好呢?
别急,咱们一个个问题来解决。
1、鼠标点击触发事件,交由bind(event, callback)解决
def selectWakeLock(self): self.destroyFrame() wakeLockFrame = Frame(self, relief=RAISED, borderwidth=1) wakeLockFrame.pack(fill=BOTH, expand=1) ...... saveFilePath = StringVar() savePathEntry = Entry(wakeLockFrame, width=65, state="normal", textvariable=saveFilePath) savePathEntry.grid(row=5, column=1, columnspan = 4, sticky=(W, E)) saveFilePath.set("D:\") ...... urlLabel = Label(wakeLockFrame, text="超链接文字", fg = "brown", justify="left", wraplength=480) urlLabel.grid(row = 10,column = 0,columnspan = 8, sticky = (W+E+S+N)) urlLabel.bind("<ButtonPress-1>", self.openFilemanager) def openFilemanager(self, event): start_directory = savePathEntry.get() if start_directory != None and start_directory.strip() != "": os.startfile(start_directory)
bind 可以将事件与处理函数绑定为同一组件。
如上示例代码所示,bind将“<ButtonPress-1>”(即鼠标点击事件)和函数openFileManager(self, event)绑定在了一起。此时鼠标点击urlLbel后,即会触发openFilemanager函数,打开对应的文件夹。
更多event事件请搜索tkinter bind event。
2、下划线的展示,交由Font解决
Label控件中虽然有underline属性,但它只能选择加到某一个字符下面,而无法使整串text都显示下划线,不过还好,它还有个font属性。
如上示例代码所示,tkinter中还有个tkFont库,只有把它import进来,你的字体展示就可以玩出花样来了。
你可以通过tkFont.Font()定义好想要显示的字体、下划线、颜色、大小等,然后将其赋值给Lable中的font属性,那么Label中的文字就能够按自定义的样式显示啦。
上一篇: netty 4.x源码分析