第064讲: GUI的终极选择:Tkinter1 | 学习记录(小甲鱼零基础入门学习Python)

这节课来学学Tkinter,python GUI 中级选择,关于 GUI 详细请看窗口视窗Tkinter

大家回顾一下,到目前为止,几乎我们所有的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 时就会自动安装。

>>> import tkinter
>>>

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

import tkinter as tk 

app = tk.Tk()
app.title('Tkinter Demo')

label1 = tk.Label( app , text = '我的第二个窗口程序!')
label1.pack()

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来调用你的函数。)

运行结果如下:(这是拉大之后的效果)
在这里插入图片描述
我们接下来继续写一个进阶版的代码:

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

import tkinter as tk 

class App() :
    def __init__(self,window) :
        window.title('Hello(1)')
        frame = tk.Frame(window)
        frame.pack()
        self.hi_there = tk.Button(frame, text = '打招呼', fg = 'blue')
        self.hi_there.pack()

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

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() 就是自动调整按钮的位置

运行结果如下:
在这里插入图片描述
我们点击按钮,但是没有任何响应,这是因为我们还没有给它写响应的代码。

这里我们就来写一个 点击按钮会执行的代码:
在这里插入图片描述
接下来,有人就会有进一步的要求了,你这个 按钮 的位置总是显示在最上边,可以修改它的位置吗?

可以的,因为这里的 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)
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值