如何使用Tkinter进行窗口的管理与设置


Posted in Python onJune 30, 2021
目录
  • 一、Tkinter介绍
  • 二、Tkinter之初体验
  • 三、窗口的管理与设置
    • 3.1、基本属性设置
    • 3.2、外形设置
    • 3.3、窗体的方法

一、Tkinter介绍

作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个键盘输入,输出的黑色窗口,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。

对于稍有GUI编程经验的人来说,Python的Tkinter界面库是非常简单的。python的GUI库非常多,选择Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,三则是从需求出发,Python作为一种脚本语言,或者说一种胶水语言,一般不会用它来开发复杂的桌面应用,它并不具备这方面的优势,使用Python,可以把它作为一个灵活的工具,而不是作为主要开发语言,那么在工作中,需要制作一个小工具,肯定是需要有界面的,不仅自己用,也能分享别人使用,在这种需求下,Tkinter是足够胜任的!

如何使用Tkinter进行窗口的管理与设置

Tkinter是Python默认的GUI库,像IDLE就是用Tkinter设计出来的,因此直接导入Tkinter模块就可以了:

import tkinter

二、Tkinter之初体验

接下来从最简单的例子入手:

import tkinter as tk

# 创建一个主窗口,用于容纳整个GUI程序
root = tk.Tk()
# 设置主窗口对象的标题栏
root.title("First Demo")
# 设置窗口大小
root.geometry('500x300+100+100')
# 添加一个Label组件,Label组件是GUI程序中最常用的组件之一。
# Label组件可以显示文本、图标或者图片
# 在这里我们让它显示指定文本
theLabel = tk.Label(root, text="我的第一个tkinter窗口!")
# 然后调用Label组件的pack()方法,用于自动调节组件自身的尺寸
theLabel.pack()
# 注意,这时候窗口还是不会显示的…
# 除非执行下面这条代码!
root.mainloop()

执行程序,如图所示。

如何使用Tkinter进行窗口的管理与设置

loop因为是循环的意思,root.mainloop就会让root不断的刷新,如果没有mainloop,就是一个静态的root,传入进去的值就不会有循环,mainloop就相当于一个很大的while循环,有个while,每点击一次就会更新一次,所以我们必须要有循环。
所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

意思是一旦进入了主事件循环,就由Tkinter掌管一切了。现在不理解没关系,在后面的学习中你会有深刻的体会。GUI程序的开发与以往的开发经验会有截然不同的感受。

通常如果要写一个比较大的程序,那么应该先把代码给封装起来。在面向对象的编程语言中,就是封装成类。看下面进阶版的例子:

import tkinter as tk


def create_button(root):
    # 创建一个按钮组件
    # fg 是 foreground 的缩写, 就是设置前景色的意思
    say_hello = tk.Button(root, text='打招呼', fg='blue', command=eat)
    say_hello.pack()
    return root


def eat():
    print('今天你吃饭了吗?')


root = tk.Tk()
app = create_button(root)

root.mainloop()

程序跑起来后出现一个“打招呼”按钮,单击它就能从IDLE接收到回馈信息,如图15-3所示。

如何使用Tkinter进行窗口的管理与设置

三、窗口的管理与设置

不知道大家是否注意到了,上述举例的简单demo程序存在窗口显示混乱的情况,这样的一个界面显然是不符合我们要求的。所以我们首先要开始学习如何使用tkinter去控制我们的窗口

3.1、基本属性设置

1.添加标题

# 设置窗口标题
root.title("title")

2.添加图标

#  设置图标,以OneDrive图标为例,必须是以 .ico 为后缀的图标文件,放于同目录下。
root.iconbitmap("OneDrive.ico")

3.设置背景

#  设置背景色,可以用英文名,也可以用十六进制表示的颜色。
root["background"] = "#00ffff"

完整代码

#  导入模块,取别名
import tkinter as tk
#  实例化一个窗体对象
root = tk.Tk()
#  设置窗口的大小长宽为300x300出现的位置距离窗口左上角+150+150
root.geometry("300x300+150+150")
#  设置窗口标题
root.title("title")
#  设置图标,以OneDrive图标为例,必须是以 .ico 为后缀的图标文件,放于同目录下。
root.iconbitmap("OneDrive.ico")
#  设置背景色,可以用英文名,也可以用十六进制表示的颜色。
root["background"] = "#00ffff"
#  进入消息循环,显示窗口
root.mainloop()

效果演示

如何使用Tkinter进行窗口的管理与设置

3.2、外形设置

1.设置透明度

#  透明度的值:0~1 也可以是小数点,0:全透明;1:全不透明
root.attributes("-alpha", 0.6)

2.设置工具栏样式

#  True 只有退出按钮,也没有图标;False 正常的窗体样式
root.attributes("-toolwindow", True)

效果演示

如何使用Tkinter进行窗口的管理与设置

3.设置全屏

#  True 全屏;False 正常显示
root.attributes("-fullscreen", True)

4.窗口置顶

#  True 所有窗口中处于最顶层;False 正常显示 两个同时被置顶的窗口为同级(能互相遮盖),但他们都能同时遮盖住没有被设置为置顶的窗口。
root.attributes("-topmost", True)

5.设置成脱离工具栏

#  True 没有工具栏按钮;False 正常显示
root.overrideredirect(True)

完整代码

#  导入模块,取别名
import tkinter as tk
#  实例化一个窗体对象
root = tk.Tk()
#  设置窗口的大小长宽为300x300出现的位置距离窗口左上角+150+150
root.geometry("300x300+150+150")
#  设置窗口标题
root.title("title")
#  设置图标,以OneDrive图标为例,必须是以 .ico 为后缀的图标文件,放于同目录下。
root.iconbitmap("OneDrive.ico")
#  设置背景色,可以用英文名,也可以用十六进制表示的颜色。
root["background"] = "#00ffff"
#  True 全屏;False 正常显示
root.attributes("-fullscreen", True)
#  True 所有窗口中处于最顶层;False 正常显示 两个同时被置顶的窗口为同级(能互相遮盖),但他们都能同时遮盖住没有被设置为置顶的窗口。
root.attributes("-topmost", True)
#  True 没有工具栏按钮;False 正常显示
root.overrideredirect(True)
#  进入消息循环,显示窗口
root.mainloop()

3.3、窗体的方法

1.获取屏幕大小

screenheight = root.winfo_screenheight()
screenwidth = root.winfo_screenwidth()

完整代码

#  导入模块,取别名
import tkinter as tk
#  实例化一个窗体对象
root = tk.Tk()
#  获取屏幕大小
screenheight = root.winfo_screenheight()
screenwidth = root.winfo_screenwidth()
print("屏幕高度:", screenheight)
print("屏幕宽度:", screenwidth)
rootwidth = 300
roothight = 300
#  设置窗口在屏幕居中
root.geometry("%dx%d+%d+%d" % (rootwidth, roothight, (screenwidth-rootwidth)/2, (screenheight-roothight)/2))
#  进入消息循环,显示窗口
root.mainloop()

演示效果

如何使用Tkinter进行窗口的管理与设置

2.获取窗体位置

root_x = root.winfo_x()
root_y = root.winfo_y()

3.获取窗体大小

root_height = root.winfo_height()
root_width = root.winfo_width()

完整代码

#  导入模块,取别名
import tkinter as tk
#  实例化一个窗体对象
root = tk.Tk()
#  设置窗体高宽和位置
root.geometry("600x500+150+150")
#  更新窗体
root.update()
#  获取窗体位置
root_x = root.winfo_x()
root_y = root.winfo_y()
#  获取窗体大小
root_height = root.winfo_height()
root_width = root.winfo_width()
#  输出窗体位置和窗体高宽
print(root_x)
print(root_y)
print(root_width)
print(root_y)
#  进入消息循环,显示窗口
root.mainloop()

演示效果

如何使用Tkinter进行窗口的管理与设置

以上就是如何使用Tkinter进行窗口的管理与设置的详细内容,更多关于Tkinter 窗口的管理与设置的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python中readline判断文件读取结束的方法
Nov 08 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
python去掉行尾的换行符方法
Jan 04 Python
django 实现电子支付功能的示例代码
Jul 25 Python
深入浅析python 协程与go协程的区别
May 09 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
Jul 31 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
python爬虫添加请求头代码实例
Dec 28 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
python3中编码获取网页的实例方法
Nov 16 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 Python
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
python not运算符的实例用法
Jun 30 #Python
pycharm部署django项目到云服务器的详细流程
You might like
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
php 删除cookie方法详解
2014/12/01 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
理解javascript异步编程
2016/01/27 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
实例讲解Python中的私有属性
2014/08/21 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
大韩航空官方网站:Korean Air
2017/10/25 全球购物
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
护士实习求职信
2014/06/22 职场文书
清明节主题班会
2015/08/14 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
一级电子管军用接收机测评
2022/04/05 无线电