GUI 之 Tkinter编程

GUI 图形界面,Tkinter 是 Python 内置的 GUI 库,IDLE 就是 Tkinter 设计的。

1. Tkinter 之初体验

import tkinter as tk

root = tk.Tk()      # 创建一个窗口

root.title('窗口标题')

# 添加 label 组件
theLabel = tk.Label(root, text='文本内容')
theLabel.pack()     # 可自动调节组件尺寸

root.mainloop()     # 主事件循环

封装版

参数:

# 1. pack() 方法 side 参数:设置对齐方式,有 LEFT、RIGHT、TOP、TOTTOM 四个方位,默认 TOP
pack(side = tk.LEFT)

# 2. pack() 方法之 padx、pady 参数:自定义按钮偏移位置
pack(padx = 20, pady = 20)			# 偏移 x、y 20 个像素

# 3. 前景算、背景色设置
tk.Button(fg='blue', bg='red')
import tkinter as tk


class Bar:
    def __init__(self, root):
        frame = tk.Frame(root)      # 创建一个框架,里面添加一个 button 按钮,框架一般用于将组件分组
        frame.pack(side=tk.LEFT, padx=20, pady=20)

        # 创建一个按钮组件,fg(foreground 缩写,即前景色),command:调用函数
        self.that = tk.Button(frame, text='打招呼', fg='blue', command=self.sya_hi)
        self.that.pack(side=tk.LEFT)        # side: 对齐 LEFT、RIGHT、TOP、TOTTOM 四个方位,默认 TOP

    def sya_hi(self):
        print('大家好,我是 rose~')

root = tk.Tk()
b = Bar(root)

root.mainloop()

2. Label 组件

Label 组件用于界面输出描述的标签,一般用作提示。

Label() 部分参数:

  • justify:设置组件中文字对齐方式
  • padx、pady:组件与边框的距离
  • text:文本内容
  • font、fg、bg:文本字体、文字颜色、背景色
  • compound:CENTER,设置文本和图像混合模式(图像作为背景,文字在其上面)
  • textvariable:接收文本对象
# 创建一个文本 label 对象

var = StringVar()
var.set('你所下载的。。。')

theLabel = Label(textvariable=var, justify=LEFT)
theLabel.pack(side=LEFT)`
from tkinter import *

root = Tk()

textLabel = Label(root, text='你下载的影片含有未成年人限制内容,\n 请满18岁再观看!',
                  justify=LEFT, padx=10)
textLabel.pack(side=LEFT)   # 可自助调节自身尺寸

photo = PhotoImage(file='3.gif')    # 仅支持 gif 格式
imageLabel = Label(root, image=photo)
imageLabel.pack(side=RIGHT)

mainloop()

Tips: 图片仅支持 .gif 格式

设置背景图片

from tkinter import *

root = Tk()

photo = PhotoImage(file='3.gif')    # 仅支持 gif 格式

textLabel = Label(root, text='你下载的影片含有未成年人限制内容,\n 请满18岁再观看!',
                  justify=LEFT, padx=10, compound=CENTER, image=photo, font=('华康少女字体', 20), fg='blue')
textLabel.pack(side=LEFT)   # 可自助调节自身尺寸


mainloop()

3. Button 组件

Button 组件用于实现一个按钮,并且可以接收用户的输入信息。

Button() 参数:

  • command:指定一个函数或方法,当用户点击按钮时,自动调用这个函数。可用来接收用户输入的值
from tkinter import *


def func(*args, **kwargs):

    print(args, kwargs)

root = Tk()

frame1 = Frame()
frame2 = Frame()

# 创建一个文本 label 对象
var = StringVar()
var.set('你所下载的。。。')

theLabel = Label(frame1, textvariable=var, justify=LEFT)
theLabel.pack(side=LEFT)

# 创建一个图形 label 对象
photo = PhotoImage(file='3.gif')
imgLabel = Label(frame1, image=photo)
imgLabel.pack(side=RIGHT)

theButton = Button(frame2, text='已满', command=func)
theButton.pack()

frame1.pack(padx=10, pady=10)
frame2.pack(padx=10, pady=10)


mainloop()

4. CheckButton 组件

Checkbutton 多选按钮,RadioButton 单选按钮。

from tkinter import *


root = Tk()

# 定义一个变量,以确认该按钮是否被选中
v = IntVar()

c = Checkbutton(root, text='测试', variable=v)
c.pack()

# 选项被选中,v = 1,否则为 0
# 展示变量 v 的值
l = Label(root, textvariable=v)
l.pack()

mainloop()

四个选项

pack() 方法的 anchor 参数可用来设置选项对齐方式,共有八个方向(上北下南左西又东/ N、NE、E、SE、S、SW、W、NW)

from tkinter import *


root = Tk()

girls = ['西施', '王昭君', '貂蝉', '杨玉环']
v = []

for girl in girls:
    v.append(IntVar())
    b = Checkbutton(root, text=girl, variable=v[-1])
    b.pack(anchor=W)        # 设置左对齐

mainloop()

Menu 组件

from tkinter import *

root = Tk()

def callback():
    print('...')

menubar = Menu(root)

# 下拉菜单 "文件",添加到顶级菜单中
filemenu = Menu(menubar, tearoff=False)

filemenu.add_command(label='打开', command=callback)
filemenu.add_command(label='保存', command=callback)
filemenu.add_separator()
filemenu.add_command(label='退出', command=quit)

menubar.add_cascade(label='文件', menu=filemenu)

# 编辑下拉菜单
editmenu = Menu(menubar, tearoff=False)
editmenu.add_command(label='剪切', command=callback)
editmenu.add_command(label='拷贝', command=callback)
editmenu.add_command(label='粘贴', command=callback)

menubar.add_cascade(label='编辑', menu=editmenu)


root.config(menu=menubar)

mainloop()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风老魔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值