- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章如何使用Tkinter进行窗口的管理与设置由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
作为 python 特定的gui界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的gui界面,我们可以用gui 实现很多直观的功能,比如想开发一个计算器,如果只是一个键盘输入,输出的黑色窗口,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的.
对于稍有gui编程经验的人来说,python的tkinter界面库是非常简单的。python的gui库非常多,选择tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,三则是从需求出发,python作为一种脚本语言,或者说一种胶水语言,一般不会用它来开发复杂的桌面应用,它并不具备这方面的优势,使用python,可以把它作为一个灵活的工具,而不是作为主要开发语言,那么在工作中,需要制作一个小工具,肯定是需要有界面的,不仅自己用,也能分享别人使用,在这种需求下,tkinter是足够胜任的! 。
tkinter是python默认的gui库,像idle就是用tkinter设计出来的,因此直接导入tkinter模块就可以了:
1
|
import
tkinter
|
接下来从最简单的例子入手:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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()
|
执行程序,如图所示.
loop因为是循环的意思,root.mainloop就会让root不断的刷新,如果没有mainloop,就是一个静态的root,传入进去的值就不会有循环,mainloop就相当于一个很大的while循环,有个while,每点击一次就会更新一次,所以我们必须要有循环。 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键.
意思是一旦进入了主事件循环,就由tkinter掌管一切了。现在不理解没关系,在后面的学习中你会有深刻的体会。gui程序的开发与以往的开发经验会有截然不同的感受.
通常如果要写一个比较大的程序,那么应该先把代码给封装起来。在面向对象的编程语言中,就是封装成类。看下面进阶版的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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所示.
不知道大家是否注意到了,上述举例的简单demo程序存在窗口显示混乱的情况,这样的一个界面显然是不符合我们要求的。所以我们首先要开始学习如何使用tkinter去控制我们的窗口 。
1.添加标题 。
1
2
|
# 设置窗口标题
root.title(
"title"
)
|
2.添加图标 。
1
2
|
# 设置图标,以onedrive图标为例,必须是以 .ico 为后缀的图标文件,放于同目录下。
root.iconbitmap(
"onedrive.ico"
)
|
3.设置背景 。
1
2
|
# 设置背景色,可以用英文名,也可以用十六进制表示的颜色。
root[
"background"
]
=
"#00ffff"
|
完整代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 导入模块,取别名
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()
|
效果演示 。
1.设置透明度 。
1
2
|
# 透明度的值:0~1 也可以是小数点,0:全透明;1:全不透明
root.attributes(
"-alpha"
,
0.6
)
|
2.设置工具栏样式 。
1
2
|
# true 只有退出按钮,也没有图标;false 正常的窗体样式
root.attributes(
"-toolwindow"
, true)
|
效果演示 。
3.设置全屏 。
1
2
|
# true 全屏;false 正常显示
root.attributes(
"-fullscreen"
, true)
|
4.窗口置顶 。
1
2
|
# true 所有窗口中处于最顶层;false 正常显示 两个同时被置顶的窗口为同级(能互相遮盖),但他们都能同时遮盖住没有被设置为置顶的窗口。
root.attributes(
"-topmost"
, true)
|
5.设置成脱离工具栏 。
1
2
|
# true 没有工具栏按钮;false 正常显示
root.overrideredirect(true)
|
完整代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# 导入模块,取别名
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()
|
1.获取屏幕大小 。
1
2
|
screenheight
=
root.winfo_screenheight()
screenwidth
=
root.winfo_screenwidth()
|
完整代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 导入模块,取别名
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()
|
演示效果 。
2.获取窗体位置 。
1
2
|
root_x
=
root.winfo_x()
root_y
=
root.winfo_y()
|
3.获取窗体大小 。
1
2
|
root_height
=
root.winfo_height()
root_width
=
root.winfo_width()
|
完整代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 导入模块,取别名
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进行窗口的管理与设置的文章就讲到这里了,如果你想了解更多关于如何使用Tkinter进行窗口的管理与设置的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这个问题已经有答案了: Is there any way to accept only numeric values in a JTextField? (20 个回答) It's possible i
我使用戴尔 XPS M1710。笔记本电脑的盖子、侧面扬声器和前置扬声器都有灯(3 组灯可以单独调节)和鼠标垫下方的灯。在 BIOS 中,我可以更改这些灯的颜色,至少是每个组。另外,我可以在鼠标垫下打
我知道我可以使用 在 iOS 5 中打开设置应用 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"
我有一个 Django 应用程序,我正在尝试为其设置文档。目录结构如下: - doc - project | - manage.py 我已经设置了路径以便 Sphinx 可以看到东西,但是当我尝试使用
我正在使用 768mb ram 运行 centos 5.5。我一直在日志中获取 server reached MaxClients setting, consider raising the MaxC
我在具有以下配置的服务器内运行了 Drupal 安装: StartServers 5 MinSpareServers 5 MaxSpareServers 15 MaxClien
是否可以使用 Microsoft.Web.Administration 包为给定的 location 配置 asp 设置? 我想以编程方式将以下部分添加到本地 IIS applicationHost.
我一直在阅读为 kube-proxy 提供参数的文档,但没有解释应该如何使用这些参数。我使用 az aks create 创建我的集群使用 azure-cli 程序,然后我获得凭据并使用 kubect
我想知道与在 PHP 中使用 setcookie() 函数相比,在客户端通过 JavaScript 设置一些 cookie 是否有任何明显的优势?我能想到的唯一原因是减少一些网络流量(第一次)。但不是
我有一个按钮可以将 body class 设置为 .blackout 我正在使用 js-cookie设置cookie,下面的代码与我的按钮相关联。 $('#boToggle').on('click'
我有一堆自定义的 HTML div。我将其中的 3 存储在具有 slide 类的 div 中。然后,我使用该幻灯片类调用 slick 函数并应用如下设置: $('.slide').slick({
我正在创建一个应该在 Windows 8(桌面)上运行的应用 我需要: 允许用户使用我的应用启动“文件历史记录”。我需要找到打开“文件历史记录”的命令行。 我需要能够显示“文件历史记录”的当前设置。
我刚买了一台新的 MacBook Pro,并尝试在系统中设置 RVM。我安装了 RVM 并将默认设置为 ➜ rvm list default Default Ruby (for new shells)
由于有关 Firestore 中时间戳行为即将发生变化的警告,我正在尝试更改我的应用的初始化代码。 The behavior for Date objects stored in Firestore
在 ICS 中,网络 -> 数据使用设置屏幕中现在有“限制后台数据”设置。 有没有办法以编程方式为我的应用程序设置“限制后台数据”? 或 有没有办法为我的应用程序调出具有选项的“数据使用”设置? 最佳
我正在尝试使用 NextJS 应用程序设置 Jest,目前在 jest.config.js : module.exports = { testPathIgnorePatterns: ["/.n
我最近升级到 FlashDevelop 4,这当然已经将我之前的所有设置恢复到原来的状态。 我遇到的问题是我无法在新设置窗口的哪个位置找到关闭它在方括号、大括号等之前插入的自动空格的选项。 即它会自动
有没有办法以编程方式访问 iPhone/iPod touch 设置? 谢谢。比兰奇 最佳答案 大多数用户设置可以通过读取存储在 /User/Library/Preferences/ 中的属性列表来访问
删除某些值时,我需要选择哪些设置来维护有序队列。我创建了带有自动增量和主键的 id 的表。当我第一次插入值时,没问题。就像 1,2,3,4,5... 当删除某些值时,顺序会发生变化,例如 1,5,3.
我正在尝试设置示例 Symfony2 项目,如此处所示 http://symfony.com/doc/current/quick_tour/the_big_picture.html 在访问 confi
我是一名优秀的程序员,十分优秀!