鱼c笔记——Python 的 GUI 编程(一):接触 Tkinter

Python 的 GUI 工具包有很多,之前的 EasyGUI 就是其中最简单的一个。但是 EasyGUI 实在是太简单了,因此只适合作为 GUI 编程的敲门砖。

而与 EasyGUI 不同,这次要介绍的 Tkinter 是 Python 的标准 GUI 库,Tkinter(Tk + interface)实际上是建立在 Tk 技术上的。Tk 技术最初是为 TCL 设计的,TCL 是一门有名的工具命令语言。但是由于可移植性和灵活性非常高,加上非常容易使用,因此被移植到许多脚本语言里,包括 Perl、Ruby 和 Python。

Tkinter 是 Python 的默认 GUI 库,像 IDLE 就是使用 Tkinter 设计出来的,因此我们只需要在 IDLE 里导入 Tkinter 就可以使用了。


下面是一个简单 GUI 程序

import tkinter as tk

#实例化一个Tk,用于容纳整个工艺程序
app = tk.Tk()  #Tk类生成了一个顶层窗口的实例app。是top level级别的一个窗口,也是root窗口

#设置它的标题栏
app.title("My first python GUI code programmed with Tkinter")    #设置窗口的标题,IDLE的标题就是文件的路径

#设置Label组件,Label组件是最常用的组件之一。可以用于显示文本图标图片
theLabel = tk.Label(app, text='我的第一个窗口程序')  #Label()是一个组件,组件实例化以后成为一个组件对象,赋值到一个变量里面去
theLabel.pack()  #pack()方法用于自动调节组件自身的尺寸以及位置
#执行到这里,窗口还不会显示,必须执行下一句


app.mainloop()   #mainloop()是窗口的主事件循环,一般是放在整个工艺程序的最后一行,因为进入主事件循环后,就由Tkinter接管一切
#在界面编程里有这样一句名言:Don't call me, I'll call you。意思是一旦进入主事件循环,就不由我们写的代码做主了,而是由工艺程序来响应用户的输入。比如说用户点击一个按钮,Tkinter感受到这个按钮被点到了,就会调用我们为这个按钮安排好的方法,是由Tkinter调用我们的函数。

通常我们要写一个比较大的程序,应该把代码封装起来。在面向对象的编程语言里就是封装成类。

下面是一个进阶版的,把 GUI 封装成类:

import tkinter as tk

class APP:
    def __init__(self, master):
        frame = tk.Frame(master)  #Frame框架是放在顶层窗口里的。框架一般用于在复杂的布局里面将这些组件分组的(编者话:不知道是不是和Java里面的Panel起到同样的作用)
        frame.pack(side=tk.LEFT, padx=10, pady=10) #side共有四个参数:Right,LEFT,TOP,BOTTOM
        #padx, pady设置框架距离顶层窗口x轴,y轴的距离
        
        #注意要加上command参数,参数值为函数名。当按钮被按下时,就会调用该方法
        self.hi_there = tk.Button(frame, text='打招呼', bg='black', fg='blue', command=self.say_hi)  #创建一个按钮组件,放在Frame框架里。bg设置背景色的颜色。fg是前景色的意思(英文没听清楚),把打招呼的颜色设置为蓝色.
        self.hi_there.pack()
        
    def say_hi(self):
        print('空朋们好,这是我的第二个GUI程序。')


root = tk.Tk()   #先创建一个顶层窗口
app = APP(root)  #再实例化这个APP

root.mainloop()

 

 

 

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值