• Tkinter的各种控件的介绍、语法格式、属性说明、常见方法:

可参考文章  Tkinter是什么 (biancheng.net)

  • python tkinter可以使用的颜色

可参考文章

https://blog.csdn.net/u013180459/article/details/82656958

  • messagebox消息对话框

在tkinter中有三种标准对话框:messagebox、filedialog、colorchooser。

三种消息框:

1、消息提示框 showinfo(title, message, options)   

2、消息警告框 showwarning(title, message, options)    

3、错误消息框 showerror(title, message, options)    

五种对话框:

1、询问确认对话框 askquestion(title, message, options)

2、确认/取消对话框 askokcancel(title, message, options)

3、是/否对话框 askyesno(title, message, options)

4、重试/取消对话框 askretrycancel(title, message, options)

5、是/否/取消对话框 askyesnocancel(title, message, options)

参数 用法
title 设置消息对话框的标题文本
message 设置消息对话框的主要文本内容,可用’\n’实现换行
default 1. 设置默认的按钮(也就是按下回车响应的那个按钮);2. 默认是第一个按钮(像“确定”,“是”或“重试”);3. 可以设置的值根据对话框函数的不同可以选择:CANCEL,IGNORE,OK,NO,RETRY 或 YES
icon 1. 指定对话框显示的图标;2. 可以指定的值有:ERROR,INFO,QUESTION 或 WARNING;3. 注意:不能指定自己的图标
parent 1. 如果不指定该选项,那么对话框默认显示在根窗口上;2. 如果想要将对话框显示在子窗口 w 上,那么可以设置 parent=w

返回值:
        showerror(),showinfo() 和 showwarning() 返回“ok”表示用户按下了“确定”按钮;

askquestion() 返回“yes”或“no”字符串表示用户点击了“是”或“否”按钮;

askokcancel(),askretrycancel() 和 askyesno() 返回布尔类型的值:用户点击了“确定”或“是”  按钮则返回 True,用户点击了“取消”或“否”按钮则返回 False。

例:

from tkinter import *
import tkinter.messageboxresponse = requests.post(url=url, data=json.dumps(payload), headers=headers)
if response.status_code != 200:txt = tkinter.messagebox.showerror(title="提示", message="更新版本信息失败,请检查!")
txt = tkinter.messagebox.showinfo(title="提示", message="更新版本信息成功!")
  • 自己练习的示例:

示例1:

# -*- coding:UTF-8 -*-
from tkinter import *
import tkinter.messagebox
import tkinter.ttk as ttk
from PIL import Image,ImageTk,ImageSequence
import time
import requests
import jsonif __name__=="__main__":root=Tk()root.title("APP版本升级配置工具")#第一步:选择环境label1=Label(root,text="1.请选择环境:",font =('微软雅黑',13,"bold"),fg = 'black',width = 12, height = 2,anchor=W)label1.grid(row=0,column=0,padx = 0,pady = 0)#新建1个整型变量,来表示中国、美西、欧洲、英国四个环境哪个被勾选radio_var1 = IntVar()#设置4个单选框控件,使用variable参数来接收变量radio1 = Radiobutton(root, text='中国', font =('微软雅黑',13), fg = 'black', width = 8, height = 2,anchor=W,value=1,variable = radio_var1)radio2 = Radiobutton(root, text='美西', font=('微软雅黑', 13), fg='black', width = 8, height = 2,anchor=W,value=2,variable = radio_var1)radio3 = Radiobutton(root, text='欧洲', font=('微软雅黑', 13), fg='black', width = 8, height = 2,anchor=W,value=3,variable = radio_var1)radio4 = Radiobutton(root, text='英国', font=('微软雅黑', 13), fg='black', width = 8, height = 2,anchor=W,value=4,variable = radio_var1)radio1.grid(row=0,column=1,padx = 0,pady = 0)radio2.grid(row=0,column=2,padx = 0,pady = 0)radio3.grid(row=0,column=3,padx = 0,pady = 0)radio4.grid(row=0, column=4, padx=0, pady=0)#第二步:选择平台label2 = Label(root, text="2.请选择平台:", font=('微软雅黑', 13, "bold"), fg='black', width=12, height=2, anchor=W)label2.grid(row=1, column=0, padx=0, pady=0)# 新建1个整型变量,来表示android、ios哪个被勾选radio_var2 = IntVar()# 设置2个单选框控件,使用variable参数来接收变量radio5 = Radiobutton(root, text='Android', font=('微软雅黑', 13), fg='black', width=8, height=2, anchor=W, value=1,variable=radio_var2)radio6 = Radiobutton(root, text='IOS', font=('微软雅黑', 13), fg='black', width=8, height=2, anchor=W, value=2,variable=radio_var2)radio5.grid(row=1, column=1, padx=0, pady=0)radio6.grid(row=1, column=2, padx=0, pady=0)#第三步:新建版本配置信息:APP Name、Version、Min Version、AppStore、Type、Scope、Description等label3 = Label(root, text="3.输入配置信息:", font=('微软雅黑', 13, "bold"), fg='black', width=12, height=2, anchor=W)label3.grid(row=2, column=0,padx=0, pady=0)# 输入APP Namelabel4 = Label(root, text="*APP Name:", font=('微软雅黑', 13), fg='black', width=13, height=2)label4.grid(row=3, column=0, padx=0, pady=0)app_name = Variable()entry_app_name = Entry(root, textvariable=app_name, bd=3, width=20, justify=LEFT)entry_app_name.grid(row=3, column=1, columnspan=1, padx=0, pady=0)# 输入APPIDlabel5 = Label(root, text="*APPID:", font=('微软雅黑', 13), fg='black', width=13, height=2)label5.grid(row=3, column=2, padx=0, pady=0)app_id = Variable()entry_app_id = Entry(root, textvariable=app_id, bd=3, width=20, justify=LEFT)entry_app_id.grid(row=3, column=3, columnspan=1, padx=0, pady=0)# 输入Versionlabel6 = Label(root, text="Version:", font=('微软雅黑', 13), fg='black', width=13, height=2)label6.grid(row=4, column=0, padx=0, pady=0)app_version = Variable()entry_app_version = Entry(root, textvariable=app_version, bd=3, width=20, justify=LEFT)entry_app_version.grid(row=4, column=1, columnspan=1, padx=0, pady=0)# 输入Min Versionlabel7 = Label(root, text="Min Version:", font=('微软雅黑', 13), fg='black', width=13, height=2)label7.grid(row=4, column=2, padx=0, pady=0)app_min_version = Variable()entry_app_min_version = Entry(root, textvariable=app_min_version, bd=3, width=20, justify=LEFT)entry_app_min_version.grid(row=4, column=3, columnspan=1, padx=0, pady=0)# 输入Descriptionlabel8 = Label(root, text="Description:", font=('微软雅黑', 13), fg='black', width=13, height=2)label8.grid(row=5, column=0, padx=0, pady=0)app_description = Variable()entry_app_name = Entry(root, textvariable=app_description, bd=3, width=20, justify=LEFT)entry_app_name.grid(row=5, column=1, columnspan=1, padx=0, pady=0)# 选择Scope,默认选中FullRelease,创建下拉菜单label9 = Label(root, text="Scope:", font=('微软雅黑', 13), fg='black', width=13, height=2)label9.grid(row=5, column=2, padx=0, pady=0)cbox = ttk.Combobox(root,width=18, justify=LEFT)cbox.grid(row=5, column=3,)cbox['value'] = ('Full release', 'Whitelist release')cbox.current(0)#安卓版本配置,需上传升级包,IOS版本配置,需输入AppStore链接label10 = Label(root, text="APK/AppStore路径:", font=('微软雅黑', 13), fg='black', width=15, height=2)label10.grid(row=6, column=0, padx=0, pady=0)app_apk = Variable()entry_app_apk = Entry(root, textvariable=app_apk, bd=3, width=40, justify=LEFT)entry_app_apk.grid(row=6, column=1, columnspan=2, padx=0, pady=0)#第四步:操作:保存配置、上架、下架env_list = ["中国", "美西", "欧洲", "英国"]platform_list = ["android", "ios"]login_base_url_list = ["https://***.cn","http://***.com","https://***.com","https://***.com"]app_version_manager_base_url_list = ['https://***/api/app-version-manager','https://***/api/app-version-manager','https://***/api/app-version-manager','https://***/api/app-version-manager']label11 = Label(root, text="4.上/下架操作:", font=('微软雅黑', 13, "bold"), fg='black', width=12, height=2, anchor=W)label11.grid(row=7, column=0, padx=0, pady=0)save_btn = Button(root, text='更新配置', fg='black', font=('微软雅黑', 13), width=8, height=1,command = lambda: save_version_config())save_btn.grid(row=7, column=1)on_btn = Button(root, text='上架', fg='black', font=('微软雅黑', 13), width=8, height=1,command = lambda: on_and_off("on"))on_btn.grid(row=7, column=2)off_btn= Button(root, text='下架', fg='black', font=('微软雅黑', 13), width=8, height=1,command = lambda: on_and_off("off"))off_btn.grid(row=7, column=3)root.mainloop()

示例2:一个窗口设置两个tab

root=Tk()
root.title("...APP版本配置工具")
#root.geometry("600x500-10+10")
tab_main = ttk.Notebook()  # 创建分页栏
tab_main.grid(row=0, column=0, padx=0, pady=0)
tab1 = Frame(tab_main)  # 创建第一页框架
tab1.grid(row=0, column=0, padx=0, pady=0)
tab_main.add(tab1, text='Android版本配置')
tab2 = Frame(tab_main)  # 创建第二页框架
tab2.grid(row=0, column=0, padx=0, pady=0)
tab_main.add(tab2, text='IOS版本配置')
tab_list=[tab1,tab2]

示例3:显示动图

if __name__=="__main__":root=Tk()root.title("你该休息啦!")root.geometry("500x90-10+10")label1=Label(root,text="站起来动一动,喝杯水吧!",font =('Arial Rounded MT Bold',25,"bold"),fg = 'DeepPink', bg = 'Gold', width = 20, height = 2)label1.grid(row=0,column=1,padx = 0,pady = 0)canvas1 = Canvas(root, width=85, height=90, bg='white')canvas1.grid(row=0, column=0, padx=0, pady=0)root.after(5000, root.destroy)while True:photo1=Image.open("C:/Users/X20232/Desktop/休息提醒/imo1.gif")iter = ImageSequence.Iterator(photo1)for frame in iter:pic = ImageTk.PhotoImage(frame)canvas1.create_image((45, 48), image=pic)time.sleep(0.1)root.update_idletasks()  # 刷新root.update()root.mainloop()

示例4:下拉选择框、csv文件读取、写入

# -*- coding:UTF-8 -*-
from tkinter import *
import tkinter.messagebox
import tkinter.ttk as ttk
from PIL import Image,ImageTk,ImageSequence
import time
import requests
import json
import csv
import osa*l_token=None
def A*l_login(event):token=Noneenv=cbox1.get()print("env=%s"%env)if env !='':login_url="/api/base-uc-app/portal/login"if env == env_list[0]:url=login_base_url_list[0]+login_urlaccount="***"password="test2021"if env == env_list[1]:url = login_base_url_list[1] + login_urlaccount = "***"password = "test2021"if env == env_list[2]:url = login_base_url_list[2] + login_urlaccount = "***"password = "test2021"if env == env_list[3]:url = login_base_url_list[3] + login_urlaccount = "***"password = "test2021"headers = {"Accept": "application/json, text/plain, */*","Content-Type": "application/json;charset=UTF-8",}payload={"password": password, "account": account, "loginFrom": "WEB"}response = requests.post(url=url,headers=headers,data=json.dumps(payload))print(response)if response.status_code != 200:txt = tkinter.messagebox.showerror(title="提示", message="%s环境登录失败,请检查环境或账号信息!"%var1.get())print("%s环境登录成功"%var1.get())token = response.json()['data']['token']a*l_token=tokenprint("a*l_token=%s"%token)returndef a*l_location_service():token = a*l_tokenenv = cbox1.get()print("env=%s" % env)if env=='':txt = tkinter.messagebox.showerror(title="提示", message="A**位置解析请选择环境!")if csv_entry.get() == '':txt = tkinter.messagebox.showerror(title="提示", message="请输入设备经纬度信息csv文件路径!")print(csv_entry.get())file1=open(csv_entry.get().split("\n")[0],'r')csv_file=csv.reader(file1)success = []for r in csv_file:print(r)if r[0]=="SN":continueserial_no=r[0]latitude=r[1]longitude=r[2]location_url = "/api/device/product/bind-gps/"+serial_noif env == env_list[0]:url = login_base_url_list[0] + location_urlif env == env_list[1]:url = login_base_url_list[1] + location_urlif env == env_list[2]:url = login_base_url_list[2] + location_urlif env == env_list[3]:url = login_base_url_list[3] + location_urlheaders = {"Accept": "application/json, text/plain, */*","Content-Type": "application/json;charset=UTF-8","autel-token":token}payload = {"lat": float(latitude),"lon": float(longitude)}response = requests.post(url=url, headers=headers, data=json.dumps(payload))print(response)if response.status_code != 200:print("SN号为%s的设备位置解析失败!"%serial_no)outcome1.insert(tkinter.END, ('SN%s,返回码:%d'%(serial_no,response.status_code)))outcome1.insert(tkinter.END, '\n')else:print("SN号为%s的设备位置解析成功!"%serial_no)country = response.json()['data']['country']level_1 = response.json()['data']['level_1']level_2 = response.json()['data']['level_2']level_3 = response.json()['data']['level_3']outcome1.insert(tkinter.END, ('SN:%s,country:%s,level_1:%s,level_2:%s,level_3:%s'%(serial_no,country,level_1,level_2,level_3)))outcome1.insert(tkinter.END, '\n')success.append([serial_no, country, level_1, level_2,level_3])file1.close()print("解析完成,将结果写入csv文件中")outcome_file_path = os.path.dirname(csv_entry.get()) + '\\A**位置解析结果.csv'print(outcome_file_path)file2 = open(outcome_file_path, 'w', newline="")outcome_file = csv.writer(file2)outcome_file.writerow(["SN", "country", "level_1", "level_2","level_3"])for s in success:outcome_file.writerow([s])file2.close()returndef tencent_location_service():if csv_entry.get() == '':txt = tkinter.messagebox.showerror(title="提示", message="请输入设备经纬度信息csv文件路径!")print(csv_entry.get())file1 = open(csv_entry.get().split("\n")[0], 'r')csv_file = csv.reader(file1)success=[]i=1for r in csv_file:print(r)if r[0]=="SN":continueserial_no = r[0]latitude = r[1]longitude = r[2]location_url = "https://apis.map.qq.com/ws/geocoder/v1?key=5Q5BZ-5EVWJ-SN5F3-K6QBZ-B3FAO-RVBWM&location="+str(latitude)+","+str(longitude)+"&sig=90da272bfa19122547298e2b0bcc0e50"headers = {"Accept": "application/json, text/plain, */*","Content-Type": "application/json;charset=UTF-8",}response = requests.get(url=location_url, headers=headers)print(response)if response.status_code != 200:print("SN号为%s的设备位置解析失败!" % serial_no)outcome2.insert(tkinter.END, ('SN%s,返回码:%d' % (serial_no, response.status_code)))outcome2.insert(tkinter.END, '\n')else:print("SN号为%s的设备位置解析成功!" % serial_no)print(response.json())country = response.json()["result"]['address_component']["nation"]print("22",country)if (response.json()["result"]['address_component']).__contains__("province") is True:province = response.json()['result']['address_component']["province"]city = response.json()['result']['address_component']["city"]county = response.json()['result']['address_component']["district"]else:province = response.json()['result']['address_component']["ad_level_1"]city = response.json()['result']['address_component']["ad_level_2"]county = response.json()['result']['address_component']["ad_level_3"]outcome2.insert(tkinter.END, ('SN:%s,country:%s,province:%s,city:%s,county:%s' % (serial_no, country, province, city,county)))outcome2.insert(tkinter.END,'\n')success.append([serial_no, country, province, city, county])i+=1#腾讯位置解析接口一个key每秒请求量只有10个if i%10==0:time.sleep(1)file1.close()print("解析完成,将结果写入csv文件中")outcome_file_path = os.path.dirname(csv_entry.get()) + '\\腾讯位置解析结果.csv'print(outcome_file_path)file2=open(outcome_file_path, 'w', newline="")outcome_file = csv.writer(file2)outcome_file.writerow(["SN", "country", "province", "city", "county"])for s in success:outcome_file.writerow([s])file2.close()returnif __name__=="__main__":root=Tk()root.title("根据经纬度查询位置工具")root.geometry("590x430-10+10")#第一步:A**l位置解析需选择环境label1=Label(root,text="A**位置解析请选择环境:",font =('微软雅黑',11),fg = 'black',width = 22, height = 2,anchor=W)label1.grid(row=0,column=0,padx = 0,pady = 0)#创建一个变量,用来表示中国、美西、欧洲、英国哪个环境被选择var1=tkinter.StringVar()#创建下拉菜单,包含中国、美西、欧洲、英国四个环境cbox1=ttk.Combobox(root,textvariable=var1,width=15,justify=LEFT)# 设置下拉菜单中的值cbox1['value'] = ('中国', '美西', '欧洲', '英国')# 绑定下拉菜单事件env_list = ["中国", "美西", "欧洲", "英国"]login_base_url_list = ["https://***.cn","https://***.com","https://***.com","https://***.com"]cbox1.bind("<<ComboboxSelected>>", A**l_login)cbox1.grid(row=0, column=1, padx=0, pady=0)#第二步:输入设备经纬度信息csv文件路径label2 = Label(root, text="设备经纬度csv文件路径:", font=('微软雅黑',11), fg='black', width=22, height=2,anchor=W)label2.grid(row=1, column=0, padx=0, pady=0)var2= Variable()csv_entry = Entry(root, textvariable=var2, bd=3, width=38, justify=LEFT)csv_entry.grid(row=1, column=1,  columnspan=2,padx=0, pady=0,sticky = W)#第三步:点击按钮执行A**位置解析或腾讯位置解析,以及数据导出按钮autel_btn = Button(root, text='A**位置解析', fg='black', font=('微软雅黑', 11), width=12, height=1, command=lambda: a*l_location_service())autel_btn.grid(row=2, column=0)tencent_btn = Button(root, text='腾讯位置解析', fg='black', font=('微软雅黑', 11), width=12, height=1,command=lambda: tencent_location_service())tencent_btn.grid(row=2, column=2)#第四步:解析结果展示outcome1= Text(root, height=20, width=35)outcome1.grid(row=3, column=0,columnspan=2,sticky = W)outcome2 = Text(root, height=20, width=35)outcome2.grid(row=3, column=2,columnspan=2,sticky = W)label4 = Label(root, text="A**解析结果展示", font=('微软雅黑', 8), fg='black', width=22, height=2)label4.grid(row=4, column=0, padx=0, pady=0)label5 = Label(root, text="腾讯解析结果展示", font=('微软雅黑', 8), fg='black', width=22, height=2)label5.grid(row=4, column=2, padx=0, pady=0)root.mainloop()

【python学习总结1】Tkinter学习总结相关推荐

  1. python gui tkinter_Python GUI tkinter 学习笔记(一)

    第一个python程序 #!/usr/bin/python # -*- coding: UTF-8 -*- #在2.x版本上,编写为:from Tkinter import * #在3.x版本上,编写 ...

  2. Python tkinter 学习笔记(2)-- 控件、组件(二)

    Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 Python tkinter 学习笔记(2)-- 控件.组件(一) > 续上一章节 Python tki ...

  3. python的messagebox的用法_Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解...

    本文实例讲述了Python GUI编程学习笔记之tkinter中messagebox.filedialog控件用法.分享给大家供大家参考,具体如下: 相关内容: messagebox 介绍 使用 fi ...

  4. Python tkinter 学习笔记(3) -- 界面布局1(grid和pack)

    Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 Python tkinter 学习笔记(2)-- 控件.组件(一) Tkinter 界面布局(grid\pac ...

  5. Python tkinter 学习笔记(2)-- 控件、组件(一)

    Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 目录 一.Tkinter 15种基础控件 1. Button 按钮控件 2.Canvas 画图控件 3.Che ...

  6. Python Tkinter 学习成果:点歌软件music

    笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...

  7. python tkinter 表格_python学习笔记(Tkinter编程利用Treeview实现表格自动更新)

    博主今天总结这段时间抽空写的一个GUI编程项目 功能是查看本地打印机队列,可选择指定队列重新打印 直接上图 UI设计包括3个区域左上方,右上方和下方列表区域 使用网格grid方法来分配位置 下面是界面 ...

  8. python项目-你肯定想学习的顶级Python项目(附代码)

    Python项目–Python的初级.中级和高级 在这个"Python 项目"博客中,让我们来看3个级别的Python项目,通过这三个项目您将会学习掌握Python,以及从整体上测 ...

  9. 想学python看什么书-想学习Python做数据分析,应该看哪些书?

    一.Python编程 /> 本书是一本针对所有层次的Python 读者而作的Python 入门书.全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib.N ...

  10. 案例驱动python编程入门-Python程序设计任务驱动式学习教程

    本书内容翔实,结构合理,语言精练,表述清晰,实用性强,易于自学,主要内容包括搭建环境和运行Python应用程序.Python基本语法.Python流程控制.列表与元组.函数与模块.文件.面向对象编程. ...

最新文章

  1. Go语言MD5加密用法实例
  2. python退出循环快捷_python退出循环的方法
  3. pytorch 图像分割的交并比_Segmentation101系列-最简单的卷积网络语义分割(1)-PASCAL VOC图像分割...
  4. 谷歌、微软、亚马逊6个惊人的A/B测试实例
  5. 数据中台应该具备的能力
  6. 机器学习笔记——决策树之回归树
  7. 怎么计算z=x+y的概率密度_上大《Scripta Mater》基于第一性原理计算,研究镁合金强化相!...
  8. 【java】方法中参数列表的应用
  9. A Survey of Transformers论文解读
  10. java jtable 自动高度,自动调整JTable中行的高度
  11. 用matlab画玫瑰花,网上收到的用matlab画玫瑰花的代码怎么不行啊,报告错误,求大神...
  12. 硬件检测相关工具大全
  13. C语言输入10个分数 去掉最高分,gogo电竞网页登录-gogo电竞网页登录
  14. android基本布局-TableLayout_表格布局
  15. 山东理工大学ACM平台题答案 数列有序! 1244
  16. 浅谈ElasticSearch
  17. 四_【Java_程序逻辑控制】
  18. Note 7陨落下的骨诺牌效应,三星从此走向衰亡将韩国经济拖下悬崖?
  19. ajax加载远程数据
  20. APISpace 分钟级降水预报API接口 免费好用

热门文章

  1. 可能是目前最详细的游戏运维指南
  2. 如何测量带宽使用情况
  3. 互联网人,不配拥有爱情
  4. Date日期格式修改
  5. [教程]KALI LINUX 2.0 2021 更新国内源
  6. 如何快速的开发一个完整的iOS直播app】(创建房间)
  7. 使用X-Slide.js实现图片轮换
  8. 小浩蠕虫(xiaohao.exe)的分析和解决方法
  9. 无人棋牌室sass,Java
  10. javascript 浅冻结、深冻结与解冻