本帖最后由 a1100330 于 2023-12-17 15:08 编辑
首先自己真的是个初学者,而且自学的,大佬们勿喷,或者有什么更好的改进,大佬们帮忙指导。 Tkinter的下拉框使用及传参打开浏览器网站、打开本地的应用程序(默认路径)。 可以应用到公司网站和应用程序集合到一个小的程序上,可以转成exe程序,方便打开、携带,主要还是为了学习使用方法,把每句代码都以自己的理解标注了,方便大家理解学习,因为自己也是初学者,有误人子弟的情况请大家原谅。 其中程序的背景图片代码没有运行,大家可以找一张自己喜欢的图片使用,放在和py文件同一个文件夹下,一定要是PNG的图片,打开背景图片的那段代码。 运行结果: 代码: import webbrowser import tkinter as tk from tkinter import ttk from tkinter import * #创建窗口 win = tk.Tk() #创建窗口 win.geometry("400x300") #设置窗口大小 win.title('传参') #设置窗口标题 win.resizable(0,0) #固定窗口,不能全屏 #背景图片代码 C = Canvas(win, bg="blue", height=1, width=1) filename = PhotoImage(file = "./bg/2029566617.png") #加载背景图片 background_label = Label(win, image=filename) #加载 background_label.place(x=0, y=0, relwidth=1, relheight=1) #位置 C.pack() #传参打开下拉框中的网址或者应用程序 def go(): # 函数定义 url = comboxlist.get() #返回选择网址 webbrowser.open(url, new=0, autoraise=True) #打开网站 #配置下拉框 win.configure(bg='green') comvalue = tk.StringVar() #内部定义的字符串变量类型,用于按钮文字变更,窗体自带的文本,新建一个值 comboxlist = ttk.Combobox(win, textvariable=comvalue) #初始化,创建下拉文本框 comboxlist["values"] = ('请选择需要打开的网站','https://www.dslt.tech/', 'https://www.baidu.com/', 'https://next.itellyou.cn/') #添加列表返回字典的值 comboxlist.current(0) #选择第一个 comboxlist.config(width=50) #设置下拉框的长 comboxlist.pack(side=TOP) #控件布局,只有在三种里选择一种,项目不能有两种布局 #配置两个按钮 button2 = tk.Button(win, text="链接", command=go) #创建确定按键,点击确定传递时间go button2.pack(side=TOP,expand=NO,fill=NONE,anchor=CENTER) #位置置顶并且铺满X轴,控件布局,只有在三种里选择一种,项目不能有两种布局 button1 = tk.Button(win, text="退出", command=win.destroy) #创建退出按键 button1.pack(side=BOTTOM,expand=NO,fill=NONE,anchor=CENTER) #位置置顶并且铺满X轴,控件布局,只有在三种里选择一种,项目不能有两种布局 #配置一个文字框 text =Text(win,width=50,height=3,bd=3, wrap=WORD, bg="white",font=('微软雅黑',15,"bold")) #创建一个Text文本框,大小,背景,字体大小 text.pack(side=TOP,fill=NONE) #控件布局,只有在三种里选择一种,每个项目不能有两种布局 #text.tag_config('link',foreground='blue',underline=True) #配置字体颜色及是否有下划线 #配置打开文字框中的链接 def show_hand_cursor(event): # 定义函数,显示箭头,会绑定到鼠标指向链接时的事件 text.config(cursor='arrow') def show_arrow_cursor(event): # 定义函数,显示光标(指针指向空白时会用到),会绑定到鼠标移除事件 text.config(cursor='xterm') def click(event,x): # 定义函数,打开一个链接,会绑定到鼠标单击链接的事件中 webbrowser.open(x) def handlerAdaptor(fun,**kwds): # 事件处理函数的适配器,相当于中介,那个event是从那里来的呢?我也纳闷,这也许就是python的伟大之处吧 return lambda event,fun=fun,kwds=kwds:fun(event,**kwds) #url1和name的关联 url1 =['C:\Program Files (x86)\Tencent\WeChat\WeChat.exe','C:\Program Files (x86)\WXWork\WXWork.exe'] #创建打开程序位置列表 name =['微信','企业微信',] ##创建程序名称列表 m=0 for each in name: #循环遍历名字 text.tag_config(m,foreground='red',underline=False) #配置字体颜色及是否有下划线 text.tag_bind(m,'<Enter>',show_hand_cursor) #Tag_bind和鼠标时间关联 text.tag_bind(m,'<Leave>',show_arrow_cursor) #Tag_bind和鼠标时间关联 text.insert(INSERT,each+' ',m) #显示输入name及链接 text.tag_bind(m,'<Button-1>',handlerAdaptor(click,x=url1[m])) #Tag_bind和网址的关联 m+=1 mainloop()
注:若转载请注明大神论坛来源(本贴地址)与作者信息。
|