欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python GUI之如何让Label实现超链接效果

程序员文章站 2022-07-12 23:20:58
...

编码环境: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属性。

def selectWakeLock(self):
        self.destroyFrame()
        wakeLockFrame = Frame(self, relief=RAISED, borderwidth=1)
        wakeLockFrame.pack(fill=BOTH, expand=1)
        ......
        ft = tkFont.Font(family = 'Fixdsys',size = 11,weight = tkFont.NORMAL, underline=1)
        urlLabel = Label(wakeLockFrame, fg = "brown", font=ft, justify="left", wraplength=480)
        urlLabel.grid(row = 10,column = 0,columnspan = 8, sticky = (W+E+S+N))
 

                 如上示例代码所示,tkinter中还有个tkFont库,只有把它import进来,你的字体展示就可以玩出花样来了。

                 你可以通过tkFont.Font()定义好想要显示的字体、下划线、颜色、大小等,然后将其赋值给Lable中的font属性,那么Label中的文字就能够按自定义的样式显示啦。