【tkinter学习笔记 - 1】:第一个GUI程序、Frame框架的使用、Label标签

简介: 【tkinter学习笔记 - 1】:第一个GUI程序、Frame框架的使用、Label标签


一、下载模块


在终端中输入如下命令

pip install TK 



二、第一个GUI程序


代码演示

from tkinter import *
from tkinter import messagebox
# 根据类Tk的无参构造函数
root = Tk()
# 设置窗口标题
root.title('我的第一个GUI程序')
# 设置窗口的大小和位置
root.geometry('300x200+100+200')
# 在主窗口中添加可视化组件,比如按钮(Button)
btn01 = Button(root,text='点我送花')
# 通过几何布局管理显示,管理组件的大小和位置
btn01.pack()
# 事件处理,通过绑定时间处理程序,响应用户操作所出发的事件(比如:单击、双击等)
def songhua(e): # e就是事件
    messagebox.showinfo('阿峰', '送你一朵小红花')
btn01.bind('<Button-1>', songhua)
# 调用组建的mainloop()方法,进入事件循环
root.mainloop()


运行结果

329891003d914564ae717acaccb04ce6.png



geometry说明


主窗口的位置大小


通过geometry('wxh(+-)x(+-)y')进行设置,w为宽度,h为高度。


+x表示距屏幕左边的距离;-x表示距屏幕右边的距离


+y表示距屏幕上边的距离;-y表示距屏幕下边的距离





三、Frame框架的使用


Frame框架是一个tkinter组件,表示一个矩形区域,Frame一般作为容器使用,可以放置其它组件,从而实现复杂的布局。


代码演示


'''测试一个经典的GUI程序的写法,使用面向对象的方式'''
from tkinter import *
from tkinter import messagebox
import tkinter as tk
class Application(tk.Frame):
    '''一个经典的GUI程序的类的写法'''
    def __init__(self, master=None):
        # Application继承Frame,但是不能自动调用Frame中的构造函数,以下为手动调用Frame中的构造函数
        tk.Frame.__init__(self, master)
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        '''创建组件'''
        # command点击按钮后执行的命令
        self.btn01 = Button(self, text='点击有惊喜', command=self.songhua)
        self.btn01.pack()
        # 设置退出按钮,command=root.destroy退出整个程序
        self.btn02 = Button(self, text='退出', command=root.destroy)
        self.btn02.pack()
    def songhua(self):
        messagebox.showinfo('送花', '送你一朵小红花')
if __name__ == '__main__':
    root = Tk()
    root.geometry('400x100+200+300')
    root.title('一个经典的GUI程序类的测试')
    app = Application(master=root)
    root.mainloop()



运行结果

80f2c086802b428293a521d55165f7b7.png





四、Label标签


Label(标签)主要用于显示文本信息,也可以显示图像


Label标签的常用属性


1、width、height

       用于指定区域大小,如果显示是文本,则以单个英文字符大小为单位(一个汉字占两个字符位置);如果显示是图像,则以像素为单位。默认值是根据具体的内容动态调整。


2、font

       指定字体样式和字体大小,如:font=(font_name, size)


3、image

       显示在Label上的图像,目前tkinter只支持gif格式


4、bg、fg

       fg(foreground):前景色;bg(background):背景色


5、justify

       针对多行文字的对齐,可设置justify属性,可选值:“left”,“center”,“right”  





代码演示


import tkinter as tk
from tkinter import *
from PIL import ImageTk, Image
class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self,master)
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        '''创建组件'''
        self.label01 = Label(self, text='第一个Label', width=11, height=2,
                             fg='white', bg='black')
        self.label02 = Label(self, text='第二个Label', width=11, height=2,
                             fg='blue', bg='white', font=('黑体',12))
        self.label01.pack()
        self.label02.pack()
        # 显示图像
        # 把photo声明成全局变量,如果是局部变量,本方法执行完毕后,图像对象销毁,窗口显示不出图像
        global img
        photo = Image.open("2.jpg")  # 括号里为需要显示在图形化界面里的图片
        photo = photo.resize((200, 100))  # 规定图片大小
        img = ImageTk.PhotoImage(photo)
        self.label03 = Label(self,image=img)
        self.label03.pack()
        self.label04 = Label(self, text='如果\n云\n知道',borderwidth=1, relief='groove', justify='right',
                             fg='white', bg='black',font=('黑体',12))
        self.label04.pack()
        # 设置退出按钮
        self.btn01 = Button(self, text='退出', command=root.destroy)
        self.btn01.pack()
if __name__ == '__main__':
    root = Tk()
    root.title('Label测试')
    root.geometry('300x300+200+300')
    app = Application(master=root)
    root.mainloop()



运行结果

15aeeb6e8c0b4aeeb24d611cb777e3dd.png


程序说明

1cc8e06fc0da4763aba93d98e05dec55.png

相关文章
|
3月前
|
数据安全/隐私保护
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Line Edit的使用及说明
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Line Edit的使用及说明
462 0
|
3月前
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明
280 0
|
3月前
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Spin Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Spin Box的使用及说明
247 0
|
3月前
|
Windows
【Qt 学习笔记】Qt常用控件 | 显示类控件 | Label的使用及说明
【Qt 学习笔记】Qt常用控件 | 显示类控件 | Label的使用及说明
117 0
|
3月前
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Combo Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 输入类控件 | Combo Box的使用及说明
430 0
|
5月前
|
UED Python
如何使用Pygame的display模块显示文本?
【6月更文挑战第11天】如何使用Pygame的display模块显示文本?
82 6
|
6月前
|
数据安全/隐私保护 图形学
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
|
6月前
|
移动开发 小程序 API
uniapp中组件库Mask 遮罩层 的使用方法
uniapp中组件库Mask 遮罩层 的使用方法
587 1
|
6月前
|
人工智能 IDE 开发工具
Python TK输入框Entry设置高度
Python TK输入框Entry设置高度
107 0
|
6月前
|
Python
python图形页面:button按钮操作函数
python图形页面:button按钮操作函数