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获取糗百图片代码实例
Dec 18 Python
Python正则表达式匹配HTML页面编码
Apr 08 Python
Python中的默认参数实例分析
Jan 29 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
python实现密度聚类(模板代码+sklearn代码)
Apr 27 Python
Python Dataframe常见索引方式详解
May 27 Python
Keras中的多分类损失函数用法categorical_crossentropy
Jun 11 Python
Pytorch可视化的几种实现方法
Jun 10 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中的字符串函数
2006/11/24 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
Python全栈之列表数据类型详解
2019/10/01 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
实习教师自我鉴定
2013/12/12 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
行政专员的岗位职责
2014/03/10 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
图书借阅制度范本
2015/08/06 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
python中tkinter复选框使用操作
2021/11/11 Python