tkinter如何实现label超链接调用浏览器打开网址

目录
  • tkinter label超链接调用浏览器打开网址
  • python tkinter Label使用
    • Label使用
    • Label的属性
    • Label方法
    • Label属性说明程序
  • 总结

tkinter label超链接调用浏览器打开网址

tkinter的label标签没有command属性,但是可以利用bind方法给label标签绑定鼠标和键盘事件

代码:

# 首先需要导入webbrowser模块
import webbrowser

# 建立窗口window
window = tk.Tk()

# 给窗口的可视化起名字
window.title('label超链接')

# 设置窗口的居中显示
screenwidth = window.winfo_screenwidth()
screenheight = window.winfo_screenheight()
width = 700
height = 150
size = "%dx%d+%d+%d" % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
# 设定窗口的大小(长 * 宽)
window.geometry(size)

# 设置label标签
link = tk.Label(window, text='点击购买高级版本:  www.baidu.com', font=('Arial', 10))
link.place(x=20, y=130)

# 此处必须注意,绑定的事件函数中必须要包含event参数
def open_url(event):
    webbrowser.open("http://www.baidu.com", new=0)

# 绑定label单击时间
link.bind("<Button-1>", open_url)

python tkinter Label使用

Label使用

Label是tkinter一个比较简单但是常用的Widget。通常用来显示提示信息或者结果。

Label的属性

Label的属性有标准属性和Widget专有属性两种。

标准属性有:

    activebackground, activeforeground, anchor,
    background, bitmap, borderwidth, cursor,
    disabledforeground, font, foreground,
    highlightbackground, highlightcolor,
    highlightthickness, image, justify,
    padx, pady, relief, takefocus, text,
    textvariable, underline, wraplength

其中highlightbackground, highlightcolor,highlightthickness和takefoucs由于标签是不支持输入的而无法使用。

Label方法

Label没有专用的方法

Label属性说明程序

程序说明

此程序说明了Label的所有属性。可以通过下拉框选择,查看属性的效果以及如何设置属性。示例如下:

代码由两部分组成,第一部分是Tkinter窗口代码,第二部分是Label属性数据。

窗口代码

# coding:utf8

import tkinter as tk
from tkinter.ttk import *
from Label_Parameter import *

cbx_para = None  # 属性下拉框
cbx_method = None  # 方法下拉框
lbl_status = None  # 输出说明性文字
lbl_code = None
lbl_result = None
frm_code = None
frm_result = None
init_para={}
demo_image = None
v_str = None

def GetInitParameter():
    global lbl_result
    global init_para
    init_para={}
    for item in Label_Parameter.parameter:
        index = item.split("/")[0]
        init_para[index] = lbl_result[index]

def ClearParameter():
    global lbl_result
    global init_para
    for item in Label_Parameter.parameter:
        index = item.split("/")[0]
        lbl_result[index]=init_para[index]

def Para_Demo(*args):
    global cbx_para
    global lbl_code
    global lbl_status
    global lbl_result
    global frm_result
    global frm_code
    global demo_image
    global v_str

    index = cbx_para.current()

    #
    if index in Label_Parameter.Label_Para:
        ClearParameter()
        frm_code.grid(row=3, column=1, padx=5, pady=5)
        frm_result.grid(row=3, column=2, padx=5, pady=5)

        frm_code["text"]=Label_Parameter.parameter[index]+":代码"
        frm_result["text"]=Label_Parameter.parameter[index]+":效果"
        temp = Label_Parameter.Label_Para[index]
        dis_code = ""
        for item in range(1,len(temp[0])):
            dis_code = dis_code+temp[0][item]+"\n"

        lbl_code['text'] = dis_code
        for item in range(1,len(temp[0])):
            exec(temp[0][item])
        # exec(item) for item in Label_Para[index][2]
        lbl_status['text'] = temp[1]
    else:
        frm_code.grid_forget()
        frm_result.grid_forget()

def center_window(root, width, height):
    screenwidth = root.winfo_screenwidth()
    screenheight = root.winfo_screenheight()
    size = '%dx%d+%d+%d' % (width, height, (screenwidth - width)/2, (screenheight - height)/2)
    root.geometry(size)

def main():
    root = tk.Tk()
    # 属性下拉框
    # 按钮
    global frm_code
    global frm_result
    global v_str
    v_str = tk.StringVar()

    frm_top = tk.Frame(root)
    frm_top.grid(row=1, column=1, sticky="W", columnspan=3, pady=2)
    sp = Separator(root, orient='horizontal')
    sp.grid(row=2, column=1, columnspan=2, sticky="nwse")
    frm_code = tk.LabelFrame(root,text="")
    frm_code.grid(row=3, column=1, padx=10)
    sp = Separator(root, orient='vertical')
    sp.grid(row=3, column=2, sticky="nwse")
    frm_result = tk.LabelFrame(root,text="")
    frm_result.grid(row=3, column=2, pady=5)
    sp = Separator(root, orient='horizontal')
    sp.grid(row=4, column=1, columnspan=2, sticky="nwse")
    frm_bottom = tk.Frame(root)
    frm_bottom.grid(row=5, column=1, columnspan=3, sticky="w")

    nCbx_Height = 10
    tk.Label(frm_top, text="属性:").grid(row=1, column=1, sticky="e")
    global cbx_para

    txt = [Label_Parameter.parameter[item] + ":" + Label_Parameter.parameter_info[item]
           for item in range(len(Label_Parameter.parameter))]
    cbx_para = Combobox(frm_top, height=nCbx_Height, values=txt, width=38)
    cbx_para.bind("<<ComboboxSelected>>", Para_Demo)
    cbx_para.set(txt[0])
    cbx_para.grid(row=1, column=2)

    tk.Label(frm_top, text="方法:").grid(row=1, column=3, sticky="e", padx=10)
    tk.Label(frm_top, text="无").grid(row=1, column=4, sticky="w", padx=5)
    global lbl_status
    lbl_status = tk.Label(frm_bottom, text="", anchor="w", justify="left")
    lbl_status.grid(row=1, column=1, sticky="w")

    global lbl_code
    lbl_code = tk.Label(frm_code, text="", justify="left")
    lbl_code.grid(row=1, column=1)

    global lbl_result
    lbl_result = tk.Label(frm_result, text="", justify="left")
    lbl_result.grid(row=1, column=1)

    GetInitParameter()
    global demo_image
    demo_image = tk.PhotoImage(file='a.PNG')
    frm_result.grid_forget()
    frm_code.grid_forget()

    root.title("Tkinter 标签使用说明")
    center_window(root,500,280)
    root.mainloop()

if __name__ == "__main__":
    main()

"""tkinter中关于Label的注释
Construct a label widget with the parent MASTER.

STANDARD OPTIONS

    activebackground, activeforeground, anchor,
    background, bitmap, borderwidth, cursor,
    disabledforeground, font, foreground,
    highlightbackground, highlightcolor,
    highlightthickness, image, justify,
    padx, pady, relief, takefocus, text,
    textvariable, underline, wraplength

WIDGET-SPECIFIC OPTIONS

    height, state, width

"""

Label_Parameter.py

第二个程序最好命名为Label_Parameter.py。

如果命名为其他程序需要修改第一部分第5行的代码。

#coding:utf8

class Label_Parameter():
    #Label 参数名称
    parameter=["activebackground", "activeforeground", "anchor", "background/bg",
               "bitmap", "borderwidth/bd", "compound", "cursor",
               "disabledforeground", "font", "foreground/fg", "height",
               "image","justify", "padx", "pady",
               "relief","state", "takefocus", "text",
               "textvariable", "underline", "width", "wraplength"]
    #Label 参数说明
    parameter_info=["背景颜色", "文本颜色", "锚定文字或者图片", "背景颜色",
               "显示bitmap", "边框宽度", "同时显示文字和图片的方法", "光标样式",
               "禁止时的背景颜色", "字体", "文字或者bitmap颜色", "高度",
               "图片","多行文字时对齐方式", "x方向上内边距", "y方向上内边距",
               "边框效果","状态", "使用Tab获得焦点", "显示文字",
                "StringVar变量与标签相关联", "指定字符下划线", "宽度", "折叠多行"]

    #Label 说明,包括序号、代码说明、代码、运行效果
    Label_Para = {
        0: [["activebackground:","lbl_result['activebackground']='red'","lbl_result['state']='active'",
                "lbl_result['text']='activebackground:背景颜色'"],
            "activebackground:定义标签在active状态下背景颜色。\n需要注意的是,必须显式定义state='active',否则该属性不生效"],
        1: [["activeforeground:","lbl_result['activeforeground'] = 'blue'", "lbl_result['state'] = 'active'",
                "lbl_result['text']='activeforeground:文本颜色'"],
            "activeforeground:定义标签在active状态下文字的颜色。\n需要注意的是,必须显式定义state='active',否则该属性不生效"],
        2:[["anchor:","lbl_result['height']=5","lbl_result['anchor']='se'","lbl_result['width']=30",
                "lbl_result['text']='anchor:在右下角SE显示文本'"],
           "anchor:指定如何对齐文字或者图片\nanchor与justify是不同的。\njustify针对的是多行文本的对齐\nanchor针对的是文本在Frame中放置的位置\nanchor可以设置为n,s,w,e或者组合,也可以是center"],
        3:[["background/bg:","lbl_result['text']='绿色背景'","lbl_result['bg']='green'",
                "lbl_result['text']='bg:背景颜色是绿色'"],
           "background/bg:指定标签的背景颜色"],
        4:[["bitmap:","lbl_result['bitmap']='error'"],
           "bitmap:显示位图\n1)使用系统自带的bitmap,直接输入名字即可。比如bitmap='error'\n2)使用自定义的bitmap,在路径前面加上'@'即可"
           ],
        5:[["borderwidth/bd:","lbl_result['bd']=20","lbl_result['bg']='lightblue'","lbl_result['text']='bd:边框=20'"],
           "bd:设置文本到Label边界的宽度\nbd参数相当于设置了padx和pady参数"
           ],
        6:[["compound:","#demo_image = tk.PhotoImage(file='a.PNG')","lbl_result['image']=demo_image","lbl_result['text']='文字在图片下方'","lbl_result['compound']=tk.TOP"],
           "compound:设置图片相对文字的位置\n可以设置为bottom,top,center,right,left\nbottom代表的是图片相对文字的位置\n实际使用中要去掉第一行代码的注释"
           ],
        7:[["cursor:","lbl_result['cursor']='watch'","lbl_result['text']='鼠标经过标签时的光标'"],
           "cursor:鼠标经过标签时的光标"
           ],
        8:[["disabledforeground:","lbl_result['state']=tk.DISABLED","lbl_result['disabledforeground']='red'","lbl_result['text']='标签禁止状态,文字是红色的'"],
            "disabledforeground:标签被禁止的时候的文本颜色\n一定要用state=tk.DISABLED,才能使该选项起作用"],
        9:[["font:","lbl_result['font']=('宋体',20,)","lbl_result['text']='font=(\"宋体\",20,)'"],
           "font:设置文本字体。\n一个标签只能用一种字体。如果要用多种字体,需要用多个标签\n字体定义可以使用三元组(字体名称,大小,修饰)\n也可以使用Font类"
           ],
        10:[["foreground/fg:","lbl_result['text']='红色文本'","lbl_result['fg']='red'"],
            "fg:设置标签文本的颜色\n要求标签的状态是tk.NORMAL"],
        11:[["height:","lbl_result['text']='height=10'","lbl_result['height']=10"],
            "height:设置标签的高度,一般与width配合使用"],
        12: [["image:", "#demo_image = tk.PhotoImage(file='a.PNG')","lbl_result['image']=demo_image"],
             "image:显示图片"],
        13: [["justify", "lbl_result['justify']=tk.LEFT", "lbl_result['text']='文字左对齐\\n第二行'"],
             "justify:多行文本的对齐方式\n支持left,right,center"],
        14: [["padx:", "lbl_result['text']='padx=5'", "lbl_result['width']=30","lbl_result['padx']=5"],
             "padx:设置文本到标签边框水平方向距离,常与pady配合使用"],
        15:[["pady:","lbl_result['text']='pady=5'","lbl_result['pady']=5"],
            "pady:设置文本到标签边框垂直方向的距离,常与padx配合使用"],
        16:[["relief:","lbl_result['text']='边框修饰效果'","lbl_result['bd']=10","lbl_result['relief']='raised'"],
            "relief:标签边框的修饰效果\n可设为flat, groove, raised, ridge, solid, or sunken"],
        17:[["state","lbl_result['state']=tk.NORMAL","lbl_result['text']='标签正常状态'"],
            "state:设置标签状态\n可设为active, disabled, normal"],
        18:[["takefocus:","lbl_result['takefocus']=True","lbl_result['text']='标签获得输入焦点'"],
            "takefocus:获得输入焦点。\n由于Label是不支持编辑的,所以获得输入焦点没有作用"],
        19: [["text:", "lbl_result['text']='标签显示的文本'"],
             "text:为标签要显示的文本"],
        20:[["textvariable:","v_str.set('通过textvariable改变标签文本')","lbl_result['textvariable']=v_str"],
             "textvariable:定义与标签文本相关联的变量\n该变量的变化会反应在标签中"],
        21: [["underline:","lbl_result['underline']=4","lbl_result['text']='Hello World!'"],
             "underline:在指定字母下面显示下划线"],
        22: [["width:","lbl_result['width']=30","lbl_result['text']='width=30'"],
             "width:定义标签宽度\n常与height属性配合使用"],
        23: [["wraplength:","lbl_result['wraplength']='50'","lbl_result['text']='这个很长的文本会被折行显示wraplength=30'"],
             "wraplength:定义折行显示\n超过wraplength定义的长度的文字会折行显示\nwraplength的单位是像素,不是文字数目"]

    }

第一部分程序使用了很多的全局变量,是为了编程以及示例代码说明的需要。

在实际的应用中不需要定义这么多的全局变量,也可以使用类的成员变量的方式减少定义全局变量的风险

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python编程之gui程序实现简单文件浏览器代码

    本文主要分享了关于在python中实现一个简单的文件浏览器的代码示例,代码及展示如下. #!/usr/bin/env python # -*- coding: UTF-8 -*- import os from time import sleep from Tkinter import * class DirList(object): def __init__(self, initdir=None): '''构造函数,说明版本信息''' self.top = Tk() self.label = L

  • Python tkinter label 更新方法

    网上看的两个例子关于tkinter界面更新的,简单易懂,分享一下. 例子_1: 代码_1: from tkinter import Tk, Checkbutton, Label from tkinter import StringVar, IntVar root = Tk() text = StringVar() text.set('old') status = IntVar() def change(): if status.get() == 1: # if clicked text.set(

  • 使用python调用浏览器并打开一个网址的例子

    python 打开浏览器,可以做简单的刷网页的小程序.仅供学习,别用非法用途. python的webbrowser模块支持对浏览器进行一些操作,主要有以下三个方法: 复制代码 代码如下: webbrowser.open(url, new=0, autoraise=True)webbrowser.open_new(url)webbrowser.open_new_tab(url) 我们需要了解webbrowser.open()方法: 复制代码 代码如下: webbrowser.open(url, n

  • tkinter如何实现label超链接调用浏览器打开网址

    目录 tkinter label超链接调用浏览器打开网址 python tkinter Label使用 Label使用 Label的属性 Label方法 Label属性说明程序 总结 tkinter label超链接调用浏览器打开网址 tkinter的label标签没有command属性,但是可以利用bind方法给label标签绑定鼠标和键盘事件 代码: # 首先需要导入webbrowser模块 import webbrowser # 建立窗口window window = tk.Tk() #

  • Java调用浏览器打开网页完整实例

    本文实例讲述了Java调用浏览器打开网页的方法.分享给大家供大家参考.具体实现方法如下: package com.yifang.demo; import java.io.File; public class OpenPageDemo { public static void main(String[] args) { try { //String url = "http://www.baidu.com"; String url = "http://www.jb51.net/&

  • node.js调用Chrome浏览器打开链接地址的方法

    本文主要介绍的是node.js调用Chrome浏览器打开链接地址的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 借助open模块实现 通过node-open模块,可以在任何平台上打开某个浏览器网址. 通过NPM安装 npm install open 使用Chrome打开网址 var open = require("open"); open("http://www.google.com", "chrome"); 调用Start打开

  • Android调用系统自带浏览器打开网页的实现方法

    在Android中可以调用自带的浏览器,或者指定一个浏览器来打开一个链接.只需要传入一个uri,可以是链接地址. 启动android默认浏览器 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器.如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接. Uri uri = Uri.parse("https://www.baidu.com"); Intent intent = new Intent(Intent.ACTI

  • python实现随机调用一个浏览器打开网页

    前两天总结了一下python爬虫 使用真实浏览器打开网页的两种方法总结 但那仅仅是总结一下而已,今天本文来实战演练一下 依然使用的是 webbrowser 这个模块 来调用浏览器 关于的三种打开方式在上一篇文章中已经说过了,这里不再赘述 如果没有特意注册,那么将会是使用默认的浏览器来打开网页,如下: #默认浏览器 #coding:utf-8 import webbrowser as web #对导入的库进行重命名 def run_to_use_default_browser_open_url(u

  • JavaScript调用浏览器打印功能实例分析

    本文实例讲述了JavaScript调用浏览器打印功能的方法.分享给大家供大家参考.具体如下: 1. 通用型,支持IE,Firefox,Chrome... 复制代码 代码如下: window.print(); 2. 只支持IE打印: <script> var print=function(){ /** * WebBrowser.ExecWB(1,1) 打开 * Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口 * Web.ExecWB(4,1) 保存网页 * Web.Ex

  • Android调用默认浏览器打开指定Url的方法实例

    复制代码 代码如下: package com.gzz.whyinzi; import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.util.Log;import android.view.Menu;import android.view.View; public class MainActivity extends

  • Android WebView或手机浏览器打开连接问题解决办法总结

    Android WebView或手机浏览器打开连接问题解决办法总结 1.通常情况下 大家可能都想使用WebView打开网页内部链接而不想再调用手机浏览器, 我们可以通过以下两种方法实现: (1)为WebView设置一个WebViewClient,并重写shouldOverrideUrlLoading(WebView view, String url)方法. class MyWebViewClient extends WebViewClient { @Override public boolean

  • python爬虫 使用真实浏览器打开网页的两种方法总结

    1.使用系统自带库 os 这种方法的优点是,任何浏览器都能够使用, 缺点不能自如的打开一个又一个的网页 import os os.system('"C:/Program Files/Internet Explorer/iexplore.exe" http://www.baidu.com') 2.使用python 集成的库 webbroswer python的webbrowser模块支持对浏览器进行一些操作,主要有以下三个方法: import webbrowser webbrowser.

  • vue如何调用浏览器分享功能详解

    前言 「Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.官方描述的它还是一个渐进式框架,本文主要介绍了关于vue调用浏览器分享的相关资料,下面话不多说了,来一起看看详细的介绍吧 步骤如下: 1.开发环境 vue+vant 2.电脑系统 windows10专业版 3.在使用vue开发的过程中,我们经常会遇到分享,下面我来分享一下我的方法,希望对你有所帮助. 4.先看效果图: 5.使用NativeShare.js 来达到上述功能的实现 // 安装 npm ins

随机推荐