第13.3节 图形界面开发tkinter
一、 引言
老猿最开始是准备就tkinter单独开一个章节,但学了一段时间tkinter,最后放弃了,前一阵子还准备干脆不介绍相关的内容。主要原因有三个,一是tkinter没有界面设计的工具,所有界面布局靠开发人员代码完成,操作很麻烦;二是tkinter模块老猿认为还不成熟,具体来说,老猿遇到了一个问题,这个问题至今没有解决,这个问题老猿并不认为是单一的问题,而是对于复杂的需求tkinter的响应存在异常(具体问题请见《Python tkinter图形界面BUTTON事件控制和编辑框返回值出现异常》);三是有朋友推荐了好用的Python图形开发工具PyQt,虽然老猿至今也就知道了这个词,但给了老猿新的希望。因此老猿放弃了tkinter的学习和详细介绍。
但老猿还是基于半吊子的学习简单介绍一下tkinter,因为缺少它总感觉基础篇不完整。
二、 使用tkinter定义主窗口
tkinter是Python图形开发的一个模块,使用前需要导入该模块。如:
import tkinter as tk在开发图形界面时,需要生成一个图形界面主窗口,所有后续组件都基于该主窗口布局。主窗口的生成语句调用tk.TK函数:
mainwin = tk.Tk()主窗口生成后可以调整大小,如将其设置为800*600:
mainwin.geometry(‘800x600’)可以设置窗口标题,如:
mainwin.title(‘LaoYuanPython tkinter学习’)最后执行mainwin.mainloop让窗口活起来可以响应操作。如:
mainwin.mainloop()
如果窗口上还需放置其他控件,该语句应该是在所有控件布局后再执行。
三、 窗口内放置控件
- 布局标签
- 定义标签,第一个参数为标签要放置到的窗口
l = tk.Label(mainwin,
text=‘老猿Python’, # 标签的文字
bg=‘white’, # 背景颜色
font=(‘Arial’, 16), # 字体和字体大小
width=60, height=4 # 标签长宽
) - 固定标签在窗口的位置
l.pack()
布局文本编辑框
text = tk.Entry(mainwin,show=’*’)
text.pack()布局按钮
- 定义按钮响应函数输出文本框输入内容
def onpressbutton():
print(“按钮被触动”)
str=text.get()
print(“输入内容为:”,str) - 定义和布局按钮
button = tk.Button(mainwin,text=“OK”,width=15,height=2,command=onpressbutton)
button.pack()
定义触发事件时的函数(注意:因为Python的执行顺序是从上往下,所以函数一定要放在按钮定义的上面)
- 布局Frame
Frame 是一个在 Windows 上分离小区域的部件, 它能将 Windows 分成不同的区,然后存放不同的其他部件. 同时一个 Frame 上也能再分成两个 Frame, Frame 可以认为是一种界面容器。
frm = tk.Frame(mainwin)
frm.pack()
对应控件如果要放到对应frame,需要在定义控件时的第一个窗口实例需要使用frame的实例。
- 布局菜单
- 创建一个菜单栏,这里我们可以把他理解成一个容器,在窗口的上方
menubar = tk.Menu(mainwin)
mainwin[‘menu’] = menubar - 定义一个空菜单单元
filemenu = tk.Menu(menubar, tearoff=0) - 将上面定义的空菜单命名为“文件”,放在菜单栏中,就是装入那个容器中
menubar.add_cascade(label=‘文件’, menu=filemenu) - 定义菜单响应函数
def showmenu():
print(“菜单被点击”) - 在“文件”中加入 “新建”、“打开”、“保存”的小菜单,如果点击这些单元, 就会触发
showmenu
的功能
filemenu.add_command(label=‘新建’, command= showmenu)
filemenu.add_command(label=‘打开’, command= showmenu)
filemenu.add_command(label=‘保存’, command= showmenu)
当然tkinter模块远不止老猿现在介绍的这些控件,主程序窗口也还有其他市县方案、事件的处理也比本节介绍的更丰富,但其他内容老猿理解不深甚至没有学习,而网上关于tkinter的材料比较多,老猿在此就不再介绍了。
四、 本节对应完整源代码
from tkinter import messagebox as msgbox
import tkinter as tk
def onpressbutton():
print("按钮被触动")
str=text.get()
msgbox.showinfo(message=(f"输入内容为:{str}"))
def showmenu():
msgbox.showinfo(message=('点击了菜单'))
mainwin = tk.Tk()
mainwin.geometry('800x600')
mainwin.title('LaoYuanPython tkinter学习')
l = tk.Label(mainwin,
text='老猿Python', # 标签的文字
bg='white', # 背景颜色
font=('Arial', 16), # 字体和字体大小
width=60, height=4 # 标签长宽
)
l.pack()
input = tk.StringVar()
text = tk.Entry(mainwin,show='*')
text.pack()
button = tk.Button(mainwin,text="显示输入内容",width=15,height=2,command=onpressbutton)
button.pack()
menubar = tk.Menu(mainwin)
mainwin['menu'] = menubar
filemenu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label='文件', menu=filemenu)
filemenu.add_command(label='新建', command= showmenu)
filemenu.add_command(label='打开', command= showmenu)
filemenu.add_command(label='保存', command= showmenu)
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
第13.3节 图形界面开发tkinter的更多相关文章
- JAVA与图形界面开发(Applet应用程序、AWT库、Swing)
Applet 1)简单说,Applet就是嵌入到网页中的小程序,Java代码. 2)编写Applet程序,要继承JApplet类,并根据自己需要覆写相关方法(init.start.stop.destr ...
- Java GUI图形界面开发工具
Applet 应用程序 一种可以在 Web 浏览器中执行的小程序,扩展了浏览器中的网页功能. 缺: 1.需要下载 Applet 及其相关文件 2.Applet 的功能是受限制的 优: 3.无需 ...
- JAVA 图形界面开发基础详解
与C的win32一样,JAVA也有自己的图形界面开发,将在此篇博客中对基础部分进行讲解. 1.Java提供的图形界面类有哪些? Java提供了两套图形界面 (1)AWT组建(基础) AWT组件是jdk ...
- Java Swing 图形界面开发(目录)
Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ...
- Java 图形界面开发--图文并茂建立学生管理系统
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...
- Java Swing图形界面开发
本文转自xietansheng的CSDN博客内容,这是自己见过的最通俗易懂.最适合快速上手做Java GUI开发的教程了,这里整合一下作为自己以后复习的笔记: 原文地址:https://blog.cs ...
- python 图形界面开发
用python来开发图形界面,确实不是很方便,没有c#,Java,甚至VB来得容易.几个控件拖拽,然后响应事件. 用python写脚本,或者web service来处理一般工作,绰绰有余.但有的时候, ...
- Eclipse下搭建SWT与Swing图形界面开发环境
一.SWT与Swing介绍 SWT(StandardWidget Toolkit)则是由Eclipse项目组织开发的一套完整的图形界面开发包,虽然当初仅仅是IBM为了编写Eclipse的IDE环境才编 ...
- silk-GUI图形界面开发一个词典
了解使用的库 Silk内置了一些GUI类库供使用者开发MacOS上的图形界面程序,只需引用gui.si即可 准备 首先要知道app需要什么功能,这里我要的是查询单词,可以听语音,还可以存储生词! 那么 ...
随机推荐
- wcf调用时时间参数问题,返回值中有日期格式得值得问题
第一种情况,客户端在调用wcf后台服务时,参数对象有日期类型得属性,日期默认值不能是datetime.minvalue得值,需要设置大于1971-1-1,不然调不通服务, 第二种情况,服务连通了,并且 ...
- NOIP前一些题目的理解
ZYB和售货机(图论,环) 题目链接 个人感觉这道题与基环树没有任何关系,你会发现,每个点最多只有一个入度和出度,所以只能是链或环. 还有就是本题的突破点就在于正确建图,题目的限制保证每个点的入度不大 ...
- 对App应用架构搭建的一些思考
当下随着App开发技术的越来越成熟,多人协同开发必不可少,一个团队中每个人的代码风格.技术栈都存在差异,因此统一一套成熟的开发架构必不可少,可以提高开发效率.统一代码风格.为项目维护提供便利. 当下A ...
- JWT 实战
上一篇我们讲解了 JWT 的基本原理和结构 你了解JWT吗?,接下来我们具体实战一下! 1. 引入依赖 <!--引入jwt--> <dependency> <groupI ...
- .NET 开源工作流: Slickflow流程引擎高级开发(八) -- 审批网关(ApprovalOrSplit)模式的应用
前言:业务流程流转过程中,审批类型的节点是比较常见的,在审批操作中,常见的操作就是就是主管人员对待办事项进行同意或者拒绝.所以网关处理节点,就是需要对这两种审批结果进行预备处理,审批网关是在或分支(O ...
- MySQL获取webshell的几种方式
select ... into outfile 需要满足的条件 对web目录有写权限 GPC关闭(GPC:是否对单引号转义) 有绝对路径(读文件可以不用,写文件需要) 没有配置secure-file- ...
- php接收base64数据生成图片并保存
public function base64(){ //接收base64数据 $image= $_POST['imegse']; //设置图片名称 $imageName = "25220_& ...
- 执行文件异常报错:ImportError: attempted relative import with no known parent package
这个问题困扰了我很久了,网上的解决方法都很一致,找来找去都是一样的解决方法,在导入包的文件和执行文件加入 1 print('__file__={0:<35} | __name__={1:< ...
- Oracle数据库由dataguard备库引起的log file sync等待
导读: 最近数据库经常出现会话阻塞的报警,过一会又会自动消失,昨天晚上恰好发生了一次,于是赶紧进行了查看,不看不知道,一看吓一跳,发现是由dataguard引起的log file sync等待.我们知 ...
- python接口测试2-开发WEB接口
首先要安装flask包: pip install flask 开发一个简单的API接口 # 1. 导入包 from flask import Flask, request # 2. 实例化一个 app ...