mahonglin123456 发表于 2017-5-6 11:43:27

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属性。


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中的文字就能够按自定义的样式显示啦。
页: [1]
查看完整版本: Python GUI之如何让Label实现超链接效果