【GUI制作】tkinter-一款跨平台的简易GUI库
前言
Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口,是Python内的一个基础GUI库,广泛应用于需要简单GUI的应用场景,编程时不支持界面与逻辑分离,因此有着天生的缺陷,不过优势也很明显,Python 使用 Tkinter 可以快速的创建 GUI 应用程序。语法清晰,而且控件信号槽之间分离(具体表现为一个控件代码出错不会中断整个应用程序)。
使用引导
导入包
import tkinter as tk
from tkinter import *
初始化界面
main_window = tk.Tk()
main_window是整个界面的主窗口,名字可以自定义。
设置窗口标题
main_window.title("界面")
title函数用于设置标题,其传参内容为字符串,对中文有良好的支持。
设置窗口创建大小
main_window.geometry("1280x720")
geometry函数用于设置主窗口大小,其传参为自定义尺寸。
添加窗口背景图片
photo = tk.PhotoImage(file="background.png") # file:t图片路径
imgLabel = tk.Label(main_window, image=photo) # 把图片整合到标签类中
imgLabel.pack(side=tk.RIGHT) # 自动对齐
定义photo变量,并把图片进行初始化;创建标签变量,给主窗口添加图片;pack函数用于布局定位,参数有以下三种
句法
widget.pack( pack_options )
这是可能的选项列表-
expand-设置为true时,小部件将扩展以填充小部件的父级中未使用的任何空间。
fill-确定小部件是否填充了打包程序分配给它的任何额外空间,还是保持其自己的最小尺寸:NONE(默认),X(仅水平填充),Y(仅垂直填充)或BOTH(水平和垂直填充) )。
side-确定父窗口小部件的哪一侧相对:TOP(默认),BOTTOM,LEFT或RIGHT。
添加一个Label控件
tk.Label(main_window, text='功能预览', font="楷体 40 bold").place(x=0, y=0, anchor='nw')
句法
widget.Lable(main_winodws,...,...,...)#添加变量用','分隔,共18个参数可调。
转载于:https://www.tutorialspoint.com/python/tk_label.htm
Sr.No. | Option & Description |
---|---|
1 |
anchor(位置) 如果小部件的空间大于文本所需的空间,此选项控制文本的位置。默认值为anchor=CENTER,它使文本在可用空间中居中。 |
2 |
bg(背景色) 显示在标签和指示器后面的正常背景色。 |
3 |
bitmap(位图) 将此选项设置为位图或图像对象,标签将显示该图形。 |
4 |
bd(边框) 指示器周围边框的大小。默认值为2像素。 |
5 |
cursor(光标) 如果您将此选项设置为光标名称(箭头、点等),当鼠标光标位于checkbutton上时,它将更改为该模式. |
6 |
font(字体) 文本标签选项指定文本中显示的字体。 |
7 |
fg(文本颜色) 如果要在此标签中显示文本或位图,则此选项指定文本的颜色。如果要显示位图,这是位图中1位位置处显示的颜色。 |
8 |
height(高度) 设置控件高度。 |
9 |
image(图片) 要在标签小部件中显示静态图像,请将此选项设置为图像对象。 |
10 |
justify(对齐方式) 指定多行文本如何相互对齐:LEFT表示左对齐,CENTER表示居中(默认),RIGHT表示右对齐。 |
11 |
padx(文本左右空间) 在小部件内文本的左右两侧添加了额外的空间。默认值为1。 |
12 |
pady(文本上下空间) 在小部件内文本的上方和下方添加额外的空间。默认值为1。 |
13 |
relief(边框) 指定标签周围装饰边框的外观。默认值是FLAT。 |
14 |
text(文本) 显示指定文本,完美兼容中文。 |
15 |
textvariable(文本变量) 要将标签小部件中显示的文本从属于StringVar类的控制变量,请将此选项设置为该变量。 |
16 |
underline(下划线) 通过将此选项设置为n,可以在文本的第n个字母下显示下划线(U),从0开始计算。默认值为下划线=-1,表示没有下划线。 |
17 |
width(宽度) 设置控件宽度 |
18 |
wraplength(字符限制) 通过将此选项设置为所需的字符数,可以限制每行中的字符数。默认值0表示仅在换行处换行。 |
Button控件
testBtn = tk.Button(main_window, text='开始', width=15, height=2, font=ft2, command=Voice_do).place(x=165,y=440,anchor='n')
句法
w = Button ( master, option=value, ... )
参数
master − 这表示父(主)窗口。
options − 可填入下面的参数
Sr.No. | Option & Description |
---|---|
1 |
activebackground 当按钮在光标下时的背景色。 |
2 |
activeforeground 当按钮位于光标下时的activeforegroundForeground颜色。 |
3 |
bd bdBorder宽度(像素)。默认值为2。 |
4 |
bg 背景颜色。 |
5 |
command 单击按钮时要调用的方法。 |
6 |
fg 前景文本颜色。 |
7 |
font 字体样式。 |
8 |
height 控件高度. |
9 |
highlightcolor 焦点高亮颜色 |
10 |
image 放置于控件的图片 |
11 |
justify 说明如何显示多个文本行:每行从左到左对齐;居中到居中;或从右到右对齐。 |
12 |
padx 文本的左右附加填充。 |
13 |
pady 文本上方和下方的附加填充。 |
14 |
relief 指定边框的类型。可选值是SUNKEN, RAISED, GROOVE, and RIDGE。 |
15 |
state 状态将此选项设置为DISABLED可使按钮灰显并使其无响应。当鼠标悬停在该值上时,该值处于活动状态。默认值为“正常”。 |
16 |
underline underlineDefault为-1,表示按钮上的文本字符将不带下划线。如果非负数,则相应的文本字符将加下划线。 |
17 |
width 控件宽度 |
18 |
wraplength 如果此值设置为正数,则文本行将换行以适合此长度。 |
Label应用实例
举个例子 通过一个按钮和一个文本控件
from tkinter import *
import tkinter as tk
# 主窗口
main_window = tk.Tk()
main_window.title("界面")
main_window.geometry("600x600")
# 添加背景图
photo = tk.PhotoImage(file="background.png") # file:t图片路径
imgLabel = tk.Label(main_window, image=photo) # 把图片整合到标签类中
imgLabel.pack(side=tk.RIGHT) # 自动对齐
#字体样式
ft2 = "微软雅黑 30 bold"#创建点击事件
def test_fun():a = "hellopython"print(a)var.set(a)#显示文本变量信息
#创建一个按钮,文本是“开始”,高度15,宽度2,字体是微软雅黑30号字体,点击事件的函数名为test_fun.
#place为放置位置,x,y为放置坐标,anchor为向上对齐格式。
test_Button = tk.Button(main_window, text='开始', width=15, height=2, font=ft2, command=test_fun).place(x=300,y=300,anchor='n')
#创建一个变量设置关联
var = tk.StringVar() # 设置关联
#创建一个Label控件用于显示相关信息
#textvariable创建一个字符串变量,bg为设置控件颜色粉色,font为字体,设置宽度高度(像素),place控制放置位置
test_Label= tk.Label(main_window, textvariable=var, bg='pink', font=ft2, width=28, height=2).place(x=65, y=420)
结论
通过tkinter构建的项目,在Windows与Linux上跨平台移植基本能够成功,唯一的问题是在Windows上的多线程机制在Linux无法体现,这个是一个很大的问题,下一章,介绍一下在tkinter上如何建立简单的多线程机制。
如果对你有用,请别忘了给我点赞!
【GUI制作】tkinter-一款跨平台的简易GUI库相关推荐
- 实战tkinter图形界面开发_八款常用的 Python GUI 开发框架推荐
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 乔柯 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- 【Python3】分析某音乐页面并使用tkinter构建简易GUI
Python 分析某音乐页面并使用tkinter构建简易GUI 分析页面 保存 简单GUI的制作 全部代码 本人python初学者,记录自己的一次学习过程,仅供参考.欢迎各位前辈指点. 分析页面 本次 ...
- php如何开发调色器,HTML5+Js制作的一款简易调色器
今天用HTML5结合Javascript制作了一款调色器,主要功能是通过移动滑块可以看到颜色的变化,并且rgb值也会随着变化,另外也可以通过输入rgb值来预览颜色.使用的技术其实很简单,滑动条使用ht ...
- Android QPython3 制作简易GUI长文本框界面
#QPython3H 制作简易GUI长文本框界面 #函数代码部分: import androidhelper as android droid=android.Android() from qsl4a ...
- python gui测试框架_八款常用的 Python GUI 开发框架推荐
作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好的选择,欢迎在评论区留言. Python 的 UI 开发工具 ...
- pythongui库推荐_八款常用的 Python GUI 开发框架推荐
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 乔柯 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- linux 图形界面库,几款开源的图形界面库(GUI Libraries)
遵循BSD许可协议的C++ GUI库,建立在Windows API之上,但仍可以通过使用WineLib在Linux/xNix上使用.也支持Pocket PC和基于Windows CE的应用程序... ...
- pythonguitkinter组件_四十八、Python中的GUI布局tkinter
「@Author:Runsen」 现在极少有人会用上tkinter了,所以真正研究的人也就更少了,本来不想更新tkinter.看到很多人在学tkinter,其实用Python做布局,没有人这么干.但还 ...
- py库: GUI(tkinter)
py库: GUI(tkinter) 图形用户界面(Graphical User Interface,简称 GUI) http://www.runoob.com/python/python-gui-tk ...
最新文章
- 虚指针的用法(原出处//http://blog.csdn.net/haoel/article/details/1948051)
- 求解带时间窗车辆路径问题的多目标模因算法
- 深入理解计算机系统(2.7)------浮点数舍入以及运算
- 八十四、搜索框动画效果实现,React-Redux 进行应用数据的管理
- [好东西]使用ngrok把本机的网站端口映射到外网
- 【最详细】数据结构(C语言版 第2版)第七章课后习题答案 严蔚敏 等 编著
- 20120621第一天_复习与测试
- shell编程中if []的用法注意
- JTable表格内容导出execl表
- python中wx_python中wx模块的具体使用方法
- 人工智能资源下载2024G
- ASP.NET类计算机专业毕业设计题目选题课题
- 跟我一起水疗的哥俩儿,其实挺猛的!
- 什么是闰年?闰年为什么是366天?为什么不能是100的倍数?
- 51单片机实战教程(四 延时程序)
- 互联网新半场的流量生态——阿里云定向免流方案
- IntelliJ inspection gives “Cannot resolve symbol“ but still compiles code
- 集群通信TIPC协议
- windows的注册表有什么用?
- Qt之标签和单行文本编辑框(QLabel、QLineEdit)
热门文章
- java crumb_vuex中,我在index.vue组件设置的值,为什么在另外一个组件crumb.vue获取不到...
- 程序员真的是吃青春饭的吗?有哪些建议可以给刚入职的程序员?(全是干货)...
- 不是每个捕鱼都叫捕鱼达人:Cocos精品《捕鱼达人4》华丽升级
- 如何在所有流媒体服务中搜索电影或电视节目
- 我的世界java爱冰雪女王_我的世界美丽而又高冷 冰雪女王介绍
- SSD_OneStage
- Windows平台下的读写锁
- DEV C++调试的时候出现闪退的解决办法
- 视频有水印不用怕,一键轻松解析视频水印,高清画质!
- 未收到服务器返回信息吗,inode 未收到服务器回应