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之折腾一下目录
Oct 24 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
Python读取一个目录下所有目录和文件的方法
Jul 15 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
python获取服务器响应cookie的实例
Dec 28 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
python把一个字符串切开的实例方法
Sep 27 Python
python PIL模块的基本使用
Sep 29 Python
python 利用toapi库自动生成api
Oct 19 Python
Python实现简单的猜单词小游戏
Oct 28 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
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
Javascript & DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
react redux入门示例
2018/04/19 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
Python使用py2exe打包程序介绍
2014/11/20 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
Django REST framework视图的用法
2019/01/16 Python
Python检测数据类型的方法总结
2019/05/20 Python
Python中bisect的用法及示例详解
2020/07/20 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
市场拓展计划书
2014/05/03 职场文书
省文明单位申报材料
2014/05/08 职场文书
给学校的建议书范文
2014/05/15 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
go开发alertmanger实现钉钉报警
2021/07/16 Golang
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python