python tkinter模块的简单使用


Posted in Python onApril 07, 2021

由于一些小原因,被迫开始了tkinter一次实战演练。在此做一些记录,总结以及给自己留一些轮子哈哈哈哈哈哈
tkinter 是 Python 的一个GUI库,本次实战完全使用tkinter,不牵扯任何其他第三方库的使用。

1.任务要求

画一个具有上传病患信息以及图片功能的用户界面

2.简单设计

由于时间紧迫且只要求可视化,背后没有必要太过精细,所以简单设计思路是,利用下拉列表实现病患信息的填写,用text显示选择图片的路径。
表面上的组件包括:两个Button:选择目录 SELECT THE DIRECTORY 和 选定(也就是上传按钮)DETECT 六个Combobox、七个Label,一个scrolledtext和一个canvas。

tips:由于要求并没有提及向哪里上传,如何上传并且要求较为美观的可视化以及时间关系,其实上传按钮就是一个出现消息弹窗的按钮,没有真正的上传功能。

实现效果:

python tkinter模块的简单使用

3.模块实现

1)canvas
创建画布的主要目的是将从word中保存的艺术字添加到主界面当中。

canvas = tk.Canvas(window, height=200, width=1000)#创建画布
image_file = tk.PhotoImage(file='1.gif')#加载图片文件
image = canvas.create_image(500,100, anchor='center', image=image_file)#将图片置于画布上
canvas.pack(side='top')#放置画布(为上端)

tips:由于tkinter本身仅支持 gif和ppm格式图片文件,所以我手动改了图片的后缀为gif(狗头)

2)combobox

#病人姓名
label=tk.Label(window, text='Patient\'s Name:',height=2,font=("微软雅黑", 16)) #创建label显示 信息为patient‘s name
label.place(x=90, y=150)#label 位置
cb_1=ttk.Combobox(window)#创建下拉框
cb_1["value"]=("张三","克里斯","亚伯拉罕")#添加默认信息
cb_1.place(x=270, y=170)#下拉框位置
#病人神份证号
label=tk.Label(window, text='Patient\'s ID   : ',height=2,font=("微软雅黑", 16))#如上
label.place(x=90, y=200)
cb_2=ttk.Combobox(window)
cb_2["value"]=("215469789725315978","123415489674534112","56487561357456123")
cb_2.place(x=270, y=220)
#病人电话
label=tk.Label(window, text='Patient\'s TEL  : ',height=2,font=("微软雅黑", 16))
label.place(x=90, y=250)
cb_3=ttk.Combobox(window)
cb_3["value"]=("13810101010","13921212121","19578956432")
cb_3.place(x=270, y=270)
#陪护人姓名
label=tk.Label(window, text='Relatives Name:',height=2,font=("微软雅黑", 16))
label.place(x=520, y=150)
cb_4=ttk.Combobox(window)
cb_4["value"]=("张三","克里斯","亚伯拉罕")
cb_4.place(x=700, y=170)
#陪护人电话
label=tk.Label(window, text='Relatives TEL  :',height=2,font=("微软雅黑", 16))
label.place(x=520, y=200)
cb_5=ttk.Combobox(window)
cb_5["value"]=("13810101010","13921212121","19578956432")
cb_5.place(x=700, y=220)
#陪护人邮件
label=tk.Label(window, text='Relatives Email:',height=2,font=("微软雅黑", 16))
label.place(x=520, y=250)
cb_6=ttk.Combobox(window)
cb_6["value"]=("13810101010","13921212121","19578956432")
cb_6.place(x=700, y=270)

3)label&scrolledText

var_name = tk.StringVar()#定义变量 用来存放图片路径
label=tk.Label(window, text='Picture Path:',height=2,font=("微软雅黑", 16))#label 显示信息Picture Path:
label.place(x=90, y=315)#设置label位置
text = tk.scrolledtext.ScrolledText(window,width=53,height=1,font=("微软雅黑", 16),fg='#22C9C9')#创建下拉框
text.place(x=230, y=320)#设置下拉框位置

4)button

# dir_load and detect button
#创建选择文件按钮
btn_login = tk.Button(window, text='select the directory', command=load_dir,width=15,height=1,font=("微软雅黑", 16),bg='#22C9C9',fg='white')#定义一个`button`按钮,名为`Login`,触发命令为`usr_login`
btn_login.place(x=250, y=420)
#创建上传按钮
btn_sign_up = tk.Button(window, text='detect', command=detect_w,width=15,height=1,font=("微软雅黑", 16),bg='#FF4081',fg='white')
btn_sign_up.place(x=525, y=420)

5)def

def load_dir():#选择目录函数
  var_name=tkinter.filedialog.askopenfilename()# 选择目录,返回目录名
  var_name+='\n'
  text.insert('end',var_name)
  print(var_name)
def detect_w():#上传弹窗函数
  print(tk.messagebox.showinfo(title='message', message='Upload Succeeded !'))

tips:由于Python执行顺序自上而下,所以触发函数要放在 button的上面。

6)tkinter框架

import tkinter as tk
import tkinter.messagebox,tkinter.filedialog,tkinter.font
from tkinter.scrolledtext import ScrolledText
from tkinter import ttk

#创建基本窗口
window=tk.Tk()#创建窗口
window.geometry('1000x600+200+200')#修改窗口大小及初始位置
window.title('Picture Process')#窗口标题

window.mainloop()#主界面显示循环函数

4.总结

时间比较紧迫,简单的做了可视化的优化就交付了这个界面。交付之后出现了一些问题。在macos中button背景颜色不显示,通过将button属性bg修改为highlightbackground简单解决了不显示的问题,但是点击button之后,button的背景颜色变为白色,只剩下边框的颜色还存在。通过查找官方文档,好像是tkinter本身的缺陷。建议使用ttk,或者引入新的库 tkmacos来解决这个问题。(未能付诸实现,纯猜测)

以上就是python tkinter模块的简单使用的详细内容,更多关于python tkinter模块的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
Jan 17 Python
django 多数据库配置教程
May 30 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
python爬虫实现中英翻译词典
Jun 25 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Python List列表对象内置方法实例详解
Oct 22 Python
PyTorch的SoftMax交叉熵损失和梯度用法
Jan 15 Python
python如何在word中存储本地图片
python 下载文件的几种方式分享
Apr 07 #Python
完美处理python与anaconda环境变量的冲突问题
python 如何用map()函数创建多线程任务
python requests模块的使用示例
Apr 07 #Python
Python 使用dict实现switch的操作
Apr 07 #Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 #Python
You might like
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
一端时间轮换的广告
2006/06/26 Javascript
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
使用python爬取B站千万级数据
2018/06/08 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python os.fork() 循环输出方法
2019/08/08 Python
django框架auth模块用法实例详解
2019/12/10 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
VC++笔试题
2014/10/13 面试题
医药专业应届毕业生求职信范文
2014/01/01 职场文书
竞选副班长演讲稿
2014/04/24 职场文书