Python项目案例开发从入门到实战-1.4Python图形界面设计
Python提供了多个图形开发界面的库,常用的Python GUI库如下。
-Tkinter:Python内置模块
-wxPython
-Jython
1.4.1创建Windows窗口
import tkinter 导入Tkinter模块
win = tkinter.Tk() 创建window窗口对象
win.title("尝试Python窗口") 设置窗口标题
win.geometry("600x330") geometry()方法设置窗口大小,其中的x是小写字母x
win.minsize("最小宽度x最小高度")
win.maxsize("最大宽度x最大高度")
win.mainloop() 进入消息循环,显示窗口
1.4.2几何布局管理器
下面的参数参考自:
http://www.yyliu.cn/post/4121d904.html
https://blog.csdn.net/qq_41556318/article/details/85108464
使用方法:pack、grid、place(option=value)
- pack几何布局管理器
选项 含义
anchor 1. 对齐方式,左对齐”w”,右对齐”e”,顶对齐”n”,底对齐”s”
2. “n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center” (默认为” center”)
expand 1. 当值为“yes”时,side选项无效,组件显示在父配件中心位置;若fill选项为”both”,则填充父组件的剩余空间。
2. 默认值是 False
fill 1. 填充x(y)方向上的空间
2. 当属性side=”top”或”bottom”时,填充x方向;
3. 当属性side=”left”或”right”时,填充”y”方向;
4. 当expand选项为”yes”时,填充父组件的剩余空间。
5. 默认值是 NONE,表示保持子组件的原始尺寸
6. 还可以使用的值有:"x"(水平填充),"y"(垂直填充)和 "both"(水平和垂直填充)
in_ 1. 将该组件放到该选项指定的组件中
2. 指定的组件必须是该组件的父组件
ipadx 组件内部在x(y)方向上填充的空间大小,默认单位为像素,可选单位为c(厘米)、m(毫米)、 i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。
ipady 组件内部在x(y)方向上填充的空间大小,默认单位为像素,可选单位为c(厘米)、m(毫米)、 i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。
padx 组件外部在x(y)方向上填充的空间大小,默认单位为像素,可选单位为c(厘米)、m(毫米)、 i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。
pady 组件外部在x(y)方向上填充的空间大小,默认单位为像素,可选单位为c(厘米)、m(毫米)、 i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。
side 1. 指定组件的放置位置
2. 默认值是 "top"
3. 还可以设置的值有:"left","bottom","right"
- grid几何布局管理器
column 组件所置单元格的列号。 自然数(起始默认值为0,而后累加)
columnspan 从组件所置单元格算起在列方向上的跨度。 自然数(起始默认值为0)
ipadx, ipady 组件内部在x(y)方向上填充的空间大小,默认单位为像素,可选单位为c(厘米)、m(毫米)、 i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。 非负浮点数(默认值为0.0)
padx, pady 组件外部在x(y)方向上填充的空间大小,默认单位为像素,可选单位为c(厘米)、m(毫米)、 i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。 非负浮点数(默认值为0.0)
row 组件所置单元格的行号。 自然数(起始默认值为0,而后累加)
rowspan 从组件所置单元格算起在行方向上的跨度。 自然数(起始默认值为0)
in_ 将本组件作为所选组建对象的子组件,类似于指定本组件的master为选定组件。 已经pack后的组件对象
sticky 组件紧靠所在单元格的某一边角。 “n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center” (默认为” center”)
- place几何布局管理器
anchor 部件其他选项的确切位置 “n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center” (默认为” nw”)
bordermode INSIDE(默认值)表示其他选项引用父类的内部(忽略其父边界),OUTSIDE则不然。 INSIDE, OUTSIDE(默认值为INSIDE)
height, width 部件以像素为单位的宽和高 整数(无默认值)
reheight, relwidth 宽和高在0.0~1.0之间的浮点数,作为父组件宽和高的一部分 0.0~1.0之间的浮点数(无默认值)
relx, rely 在0.0~1.0之间的水平和垂直偏移量,作为父组件宽和高的一部分 0.0~1.0之间的浮点数(默认值为0.0)
x, y 水平和垂直的像素偏移。 整数(默认值为0)
1.4.3Tkinter组件
参考自:http://www.cnblogs.com/Zidon/p/5022321.html
控件 描述
Button 按钮控件;在程序中显示按钮。
Canvas 画布控件;显示图形元素如线条或文本
Checkbutton 多选框控件;用于在程序中提供多项选择框
Entry 输入控件;用于显示简单的文本内容
Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label 标签控件;可以显示文本和位图
Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton 菜单按钮控件,由于显示菜单项。
Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message 消息控件;用来显示多行文本,与label比较类似
Radiobutton 单选按钮控件;显示一个单选的按钮状态
Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text 文本控件;用于显示多行文本
Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox 用于显示你应用程序的消息框。
标准属性
属性 描述
Dimension 控件大小;
Color 控件颜色;
Font 控件字体;
Anchor 锚点;
Relief 控件样式;
Bitmap 位图;
Cursor 光标
text 显示文本内容
state 设置组件状态为正常(normal),激活(active)或禁用(disable)
1.4.4Tkinter字体
- 通过元组表示字体
(font family, size ,modifiers)
例:
for ft in (('Arial',('Times New Roman','3','italic'))
Label(win,text='Hello,my dream world',font=ft)
- 通过Font对象表示字体
ft=tkFont.Font((family='Fixdays',size=20,weight='bold',slant='italic',underline=1,overstrik=1))
family 字体名
size 大小
weight 粗体:bold或normal或不写
slant 斜体:italic或normal或不写
underline 下划线
overstrik 删除线
1.4.5Python事件处理
- 事件类型
事件类型的通用格式:<[modifier-]…type[-detail]>
事件类型必须放置于尖括号<>中,type描述类型,如键盘按键、鼠标单击;modifier用于组合键定义,如Control、Alt;detail用于明确定义是哪一个键或按钮的事件,如1表示鼠标左键,2表示鼠标中间,3表示鼠标右键
例:
<Button-1> 按下鼠标左键
<KeyPress-A> 按下键盘上的A
<Control-Shift-KeyPress-A> 同时按下Control、Shift和A三个键
键盘事件:KeyPress、KeyRelease
鼠标事件:ButtonPres或Button、ButtonReleas、Motion(点击组件并拖拽)、Enter、Leave、MouseWheel
窗体事件:Visibility、Unmap、Map、Expose、FocusIn、FocusOut、Configure、Property、Destroy、Activate、Deactivate
组合键修饰符:Alt、Any、Control、Double、Lock(Caps Lock键)、Shift、Triple
- 事件绑定
例:
def submit()
...
bt1 = Button(win,text='Submit',command=submit)
Python项目案例开发从入门到实战-1.4Python图形界面设计的更多相关文章
- 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
<ASP.NET Core跨平台开发从入门到实战>样章节 Web API自定义格式化protobuf. 样章 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于 ...
- python项目案例
python项目案例1:----此学习案例用python3编写,摘自明日科技,感谢! 学生管理系统: 功能描述:具有增删改查,排序,保存并显示学生的全部信息. 1.主界面---函数menu(),显示功 ...
- React 可视化开发工具 Shadow Widget 非正经入门(之五:指令式界面设计)
本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点.本篇解释 Shadow Widget 中类 Vue 的控制指令,与指令式界面设计相关. 1. 指令式界面设计 Vue 与 A ...
- python的re模块一些方法 && Tkinter图形界面设计 && 终止python运行函数 && python读写文件 && python一旦给字符串赋值就不能单独改变某个字符,除非重新给变量赋值
Tkinter图形界面设计见:https://www.cnblogs.com/pywjh/p/9527828.html#radiobutton 终止python运行函数: 采用sys.exit(0)正 ...
- Django 入门项目案例开发(上)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. Django 入门案例开发(中) http://www.cnblogs.com/focusBI ...
- 【Python高级工程师之路】入门+进阶+实战+爬虫+数据分析整套教程
点击了解更多Python课程>>> 全网最新最全python高级工程师全套视频教程学完月薪平均2万 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加 ...
- python全栈开发从入门到放弃之迭代器生成器
1.python中的for循环 l = [1,2,3,4,5,6] for i in l: #根据索引取值 print(i) 输出结果: 1 2 3 4 5 6 2.iterable 可迭代的 可迭 ...
- Java 快速开发几 MB 独立 EXE,写图形界面很方便
Java 写的桌面软件带上运行时只有 6 MB,而且还是独立 EXE 文 件,是不是难以置信? 想一想 Electron 没写多少功能就可能超过百 MB 的体积,Java 写的桌面软件算不算得上小.轻 ...
- Django 入门项目案例开发(下)——创建项目应用及模型类
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. 前面两章是在已经开发好的项目上用来描述环境和业务,这一章创建一个全新的项目来用作开发,你可以跟 ...
- Django 入门项目案例开发(中)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. 昨天已经描述了如何搭建Django的开发环境,今天描述业务流程,具体我们要实现一个什么样的业务 ...
随机推荐
- 访问修饰符 protected(s)
protected 受保护的:可以在当前类的内部以及该类的子类中可以访问. using System; using System.Collections.Generic; using System.L ...
- Little Girl and Maximum Sum CodeForces - 276C - 差分
给定一个数列 \(a= { a_1,a_2,...,a_n }\) 以及 \(q\) 次查询. 其中第 \(i\) 次查询如同:\(l_i, r_i\),意指求 \(\sum_{j=l_i}^{r_i ...
- 2022-04-13内部群每日三题-清辉PMP
1项目经理正在执行一个资源有限,期限严格的引人注目的项目.该项目目前落后于进度,对资源平衡的审查显示,一些资源被过度分配.请问项目经理应该怎么办? A.重新分配来自另一个项目不必要的资源 B.为延迟的 ...
- 062_Apex使用Assert
assert关键字用法简单,但是使用assert往往会让你陷入越来越深的陷阱中.应避免使用.总结了以下原因: 1.用assert代替if是陷阱之二.assert的判断和if语句差不多,但两者的作用 ...
- nginx 白名单配置
方法一. iptables [root@root~]# vim /etc/sysconfig/iptables .... -A INPUT -s 白名单IP -p tcp -m state --sta ...
- bootstrap-select使用、relation-graph使用
bootstrap-select 这里要实现的是带有搜索功能的select框, bootstrap 官网没有可以直接拿来用的.如下是官网给出的解释,带搜索功能的select需要自定义. 在网上找到了有 ...
- 记录 windows RabbitMq 安装教程
安装地址:https://www.rabbitmq.com/ RabbitMq 官网下载如下两个exe文件,otp_win64_22.0.exe 文件是rabbitmq的运行环境,必须安装!!! 傻子 ...
- js 获取年月日时分秒,星期
getDate() { var date = new Date() // 获取时间 var year = date.getFullYear() // 获取年 var month = date.getM ...
- 【批量下载】url——wget,给定网址,批量下载文件
写在前面:最近在学习批量下载sci文章并传入noteexpress,从网上学来了一些方法,其中有一步需要使用url将sci-hub上面的文章批量下载下来. 学习网址:[研究生]快速批量下载 Web o ...
- c++学习1 基础关键词
一 "const" 修饰变量 只能被初始化和读取,不能被赋值更改,且必需初始化,不初始化的话会因为读取到随机数而报错. example: const int date=100; c ...