《零基础入门学习Python》第064讲:GUI的终极选择:Tkinter

文章介绍了Python的GUI库Tkinter,它是Python的默认GUI库,通过示例代码展示了如何创建窗口、设置标题、添加Label组件以及使用Button组件响应用户操作。文章还讨论了如何将GUI编程封装到类中,以及如何调整组件的位置和大小。
摘要由CSDN通过智能技术生成

大家回顾一下,到目前为止,几乎我们所有的Python代码都是基于文字交互的界面。Python 的 GUI 工具包有很多,之前我们学过的 EasyGui 就是其中最简单的一个,不过呢,EasyGui 实在是太简单了,因此,它只适合大家接受 GUI 编程的敲门砖,这一次,我们要讲的可不是什么二流货色,这一次我们来讲讲 Tkinter,Tkinter 是什么呢?它有那么 niubi 吗?

Tkinter 是Python 的标准工具库,它实际上是建立在 TK 技术上的,TK 技术最初是为 TCL 所设计的,TCL 是一门有名的工具命令语言,但是由于其可移植性和灵活性非常强,加上非常容易使用,因此,TK 技术被移植到许多脚本语言里,包括大名鼎鼎的 Perl 、Ruby 和 Pytho。Tkinter 是 Python 的默认 GUI 库,所以,像 IDLE 使用的就是 Tkinter 设计出来的,因此,我们直接在 IDLE 中导入 tkinter,就可以使用了。tkinter 模块在默认安装 Python 时就会自动安装。

 
  1. >>> import tkinter

  2. >>>

我们现在就来做一个例子,从最简单的例子入手:

 
  1. import tkinter as tk

  2. app = tk.Tk()

  3. app.title("GUI Demo")

  4. theLabel = tk.Label(app, text = "我的第二个GUI")

  5. theLabel.pack()

  6. app.mainloop()

tk.Tk() 就让tk 这个类生成了一个 顶层窗口的实例,top level 级别的窗口,我们也成为 root 窗口(根窗口);

title ,顾名思义,就是设置窗口的标题;

我们来写一个 theLbel 的变量,这个变量接收 tk.Label(),Label 是一个组件,这个组件实例化之后,赋值到 tk.Label 变量中去,这个组件是放在 app 窗口上的,然后组件显示文字为 “我的第二个GUI程序”。(Label 组件 基本上是最常用的组件了,可以用来显示文本,图像,图标等)

theLabel.pack():用于自动调节组件自身的尺寸和位置

app.mainloop():是窗口的主事件循环,这基本是使用tkinter 的GUI程序的最后一行代码,因为进入了主事件循环之后,就由tkinter接管一切,也就是说,一旦执行了这行代码,就不再由代码做主了,而是由 tkinter 来响应用户的输入(例如,用户按下一个按钮,tkinter就会感受到,然后就会响应你为这个事件安排好的方法,由tkinter来调用你的函数。)

运行结果如下:(这是拉大之后的效果)

我们接下来继续写一个进阶版的代码:

学到现在,大家应该知道了,通常如果你想要写一个比较大的程序,那么你应该把代码封装起来,在面向对象的编程语言中,就是封装成类。

 
  1. import tkinter as tk

  2. class App:

  3. def __init__(self, master):

  4. frame = tk.Frame(master)

  5. frame.pack()

  6. self.hi_there = tk.Button(frame, text = '打招呼', fg = 'blue')

  7. self.hi_there.pack()

  8. root = tk.Tk()

  9. app = App(root)

  10. root.mainloop()

我们把 GUI 封装成类,类名为 App。首先,我们要实例化 tk.Tk(),创建一个 root 窗口,这里我们直接命名变量为 root,然后实例化 App,把 root 作为参数,最后就是 root.mainloop() 主事件循环。

因此我们知道在 类 App 里,需要使用构造函数来写入参数,我们开始写 __init__() 方法,传入的参数我们给 master,我们使用 tk.Frame 框架,那么框架是什么呢?框架一般是用于在复杂的布局里面,将这些组件进行分组。然后使用 pack() 方法字典自动调整位置,暂时我们还不要人为干预,等会我们再操作。接下来,创建一个 按钮 组件,使用tk.Button() 方法,这个按钮就放在 frame 框架中,按钮文本为 “打招呼”,fg(Foreground) 设置前景色,另外,bg 设置背景色。self.hi_there.pack() 就是自动调整按钮的位置。

运行结果如下:

我们点击按钮,但是没有任何响应,这是因为我们还没有给它写响应的代码。

这里我们就来写一个 点击按钮会执行的代码:

 
  1. import tkinter as tk

  2. class App:

  3. def __init__(self, master):

  4. frame = tk.Frame(master)

  5. frame.pack()

  6. self.hi_there = tk.Button(frame, text = '打招呼', fg = 'blue', command = self.say_hi)

  7. self.hi_there.pack()

  8. def say_hi(self):

  9. print('你好,来自江南的你!')

  10. root = tk.Tk()

  11. app = App(root)

  12. root.mainloop()

我们写了一个 say_hi() 的方法,一定记得,在 tk.Button() 中加多一个参数 command,command = 你点击按钮之后要执行的函数名

我们再次运行代码,当我们按下 “打招呼” 按钮时,在 IDLE 窗口中就会打印 :

 
  1. >>>

  2. =============== RESTART: C:\Users\tk1.py ===============

  3. 你好,来自江南的你!

  4. 你好,来自江南的你!

  5. 你好,来自江南的你!

  6. 你好,来自江南的你!

接下来,有人就会有进一步的要求了,你这个 按钮 的位置总是显示在最上边,可以修改它的位置吗?

可以的,因为这里的 pack() 方法 是自动会调整对应的组件或者框架的位置,默认是调整在 最上边(top),它一共有4个位置:'left''right''top''bottom'

例如,我们改一下代码:

frame.pack(side='left')

或者

frame.pack(side=tk.LEFT)  #不建议

我们还不想让这个按钮挨着边,我们可以通过设置 pack() 方法的 padx 和 pady 参数来实现:

frame.pack(side='left', padx = 10, pady = 10)

今天这就是所有的内容了,主要就是接触一下 tkinter,下一节课开始我们就来仔细讲解每个组件的功能以及如何使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值