博客
关于我
Python编程:Tkinter图形界面设计(2)
阅读量:798 次
发布时间:2023-03-07

本文共 5114 字,大约阅读时间需要 17 分钟。

Tkinter控件详解

Tkinter 是 Python 的标准库,用于创建 GUI(图形用户界面)程序。其中,Button(按钮)、Checkbutton(复选框)、Radiobutton(单选框)和Menu(菜单)是最常用的控件之一。本文将详细介绍这些控件的特性、属性和使用方法。


一、Button控件

Button 是 Tkinter 中最常用的控件之一,用于创建按钮。按钮可以包含文本或图片,并且可以关联回调函数。以下是 Button 的常用属性和方法。

常用属性列表

  • activebackground

    鼓励按钮的背景色。

  • activeforeground

    鼓励按钮的前景色(通常是文字颜色)。

  • bd

    按钮的边框宽度,默认为 2 像素。

  • bg

    按钮的背景色。

  • command

    按钮关联的回调函数,当按钮被点击时会自动调用该函数。

  • fg

    按钮文本的颜色。

  • font

    按钮的字体。

  • height

    按钮的高度。

  • highlightcolor

    当按钮被激活时的高亮颜色。

  • image

    按钮显示的图片。

  • justify

    多行文本的对齐方式,可选项包括:LEFT、RIGHT、CENTER。

  • padx

    按钮在 X 轴方向上的内边距。

  • pady

    按钮在 Y 轴方向上的内边距。

  • relief

    边框样式,可选值包括:FLAT、SUNKEN、RAISED、GROOVE、RIDGE,默认为 FLAT。

  • state

    按钮的状态,可选值包括:NORMAL、ACTIVE、DISABLED,默认为 NORMAL。

  • underline

    文本是否带下划线,索引方式表示。

  • width

    按钮的宽度。

  • wraplength

    文本行的最大字符数量。

  • text

    按钮显示的文本内容。

  • anchor

    文本的位置,可选值包括:N、S、E、W、CENTER。

  • compound

    组合控件类型,可选值包括:NONE、LEFT、RIGHT、CENTER、TOP、BOTTOM。

  • bitmap

    使用位图表示的图片。

  • focus_set

    焦点设置,通常与 Entry 控件配合使用。

  • master

    父窗口指针。

  • relief

    边框样式,和 Button 的 relief 属性相同。

  • wraplength

    文本行的最大字符数量。


  • 常用方法

  • deselect()

    清除单选按钮的选中状态。

  • flash()

    在激活状态和正常状态之间快速闪烁,保持开始的状态。

  • invoke()

    调用与按钮单击时相同的操作。

  • select()

    设置按钮为选中状态。

  • toggle()

    切换按钮的选中状态。


  • 二、Checkbutton控件

    Checkbutton 是 Tkinter 中的复选框,用于表示两种状态:选中和未选中。它支持多个选项,可以通过变量来关联。

    常用属性列表

  • activebackground

    鼓励复选框的背景色。

  • activeforeground

    鼓励复选框的前景色。

  • bg

    复选框的背景色。

  • bitmap

    复选框显示的位图。

  • bd

    边框宽度,默认为 2 像素。

  • command

    复选框关联的回调函数。

  • cursor

    光标的形状。

  • disabledforeground

    复选框处于禁用状态时的前景色。

  • font

    复选框的字体。

  • fg

    复选框的前景色。

  • height

    复选框的高度。

  • highlightcolor

    复选框聚焦时的高亮颜色。

  • image

    复选框显示的图片。

  • justify

    多行文本的对齐方式。

  • offvalue

    复选框未选中时的值。

  • onvalue

    复选框选中时的值。

  • padx

    内边距,X 方向。

  • pady

    内边距,Y 方向。

  • relief

    边框样式。

  • selectcolor

    选中时的颜色,默认为 red。

  • selectimage

    选中时显示的图片。

  • state

    状态,默认为 NORMAL。

  • text

    显示的文本,支持换行。

  • underline

    文本是否带下划线。

  • variable

    关联的变量,值为 1 或 0。

  • width

    宽度,默认为文本或图片决定的大小。

  • wraplength

    文本行的最大字符数量。


  • 常用方法

  • deselect()

    清除复选框的选中状态。

  • flash()

    在激活状态和正常状态之间快速闪烁。

  • invoke()

    调用与单击时相同的操作。

  • select()

    设置复选框为选中状态。

  • toggle()

    切换复选框的选中状态。


  • 三、Radiobutton控件

    Radiobutton 是 Tkinter 中的单选按钮,和 Checkbutton 类似,但只能选择一个选项。它通常用于多个选项中选择一个。

    特点

    • 只能选择一个选项。
    • 可以显示文字或图片。
    • 可以绑定回调函数。

    使用方法

    from tkinter import *
    def print_selection():
    var1.set('你选择了' + var1.get())
    window = Tk()
    window.title('选择按钮')
    window.geometry('300x300')
    var1 = StringVar()
    label = Label(window, bg='green', width=25, height=2, text='目前没有选项')
    label.pack()
    r1 = Radiobutton(window, text='A选项', variable=var1, value='A', command=print_selection)
    r1.pack()
    r2 = Radiobutton(window, text='B选项', variable=var1, value='B', command=print_selection)
    r2.pack()
    r3 = Radiobutton(window, text='C选项', variable=var1, value='C', command=print_selection)
    r3.pack()
    window.mainloop()

    四、Menu控件

    Menu 用于创建菜单,支持添加命令、菜单项和子菜单。Menu 的使用非常灵活,适合创建复杂的菜单界面。

    使用方法

    from tkinter import *
    window = Tk()
    window.title('菜单')
    menubar = Menu(window)
    # 创建子菜单
    file_menu = Menu(menubar)
    file_menu.add_command(label='新建', command=lambda: print('新建文件'))
    file_menu.add_command(label='打开', command=lambda: print('打开文件'))
    file_menu.add_command(label='保存', command=lambda: print('保存文件'))
    file_menu.add_command(label='另存为', command=lambda: print('另存为文件'))
    edit_menu = Menu(menubar)
    edit_menu.add_command(label='复制', command=lambda: print('复制'))
    edit_menu.add_command(label='粘贴', command=lambda: print('粘贴'))
    edit_menu.add_command(label='剪切', command=lambda: print('剪切'))
    view_menu = Menu(menubar)
    view_menu.add_command(label='大纲视图', command=lambda: print('大纲视图'))
    view_menu.add_command(label='网页视图', command=lambda: print('网页视图'))
    help_menu = Menu(menubar)
    help_menu.add_command(label='版权信息', command=lambda: print('版权信息'))
    help_menu.add_command(label='其他说明', command=lambda: print('其他说明'))
    # 将菜单添加到主窗口
    menubar.add_cascade(label='文件', menu=file_menu)
    menubar.add_cascade(label='编辑', menu=edit_menu)
    menubar.add_cascade(label='视图', menu=view_menu)
    menubar.add_cascade(label='帮助', menu=help_menu)
    window.config(menu=menubar)
    window.mainloop()

    五、Message控件

    Message 控件用于显示多行文本,支持换行和对齐。它比 Label 控件更灵活,适合展示较长的文字。

    使用方法

    from tkinter import *
    window = Tk()
    window.title('多行文本')
    whatever_you_do = "Only those who have the patience to do simple things properly are truly great.这是一行长文本,会自动换行显示。"
    message = Message(window, text=whatever_you_do)
    message.config(bg='lightgreen', font=('times', 20, 'italic'))
    message.pack()
    window.mainloop()

    六、画布(Canvas)控件

    Canvas 是 Tkinter 中用于绘图的主要工具,可以绘制图形、文本、控件或其他复杂元素。

    常用属性

  • bd

    边框宽度。

  • bg

    背景色。

  • confine

    是否限制画布滚动。

  • cursor

    光标形状。

  • height

    画布高度。

  • highlightcolor

    高亮颜色。

  • relief

    边框样式。

  • scrollregion

    可滚动区域。

  • width

    画布宽度。

  • xscrollincrement

    水平滚动增量。

  • xscrollcommand

    水平滚动条的 set 方法。

  • yscrollincrement

    垂直滚动增量。

  • yscrollcommand

    垂直滚动条的 set 方法。


  • 画布使用示例

    以下是一个简单的递归二叉树绘制示例:

    from turtle import *
    # 设置色彩模式
    colormode(255)
    lt(90) # 左转90度
    lv = 14 # 树的高度
    l = 120 # 每个分支的长度
    s = 45 # 叉的长度
    pencolor(0, 0, 0)
    penup()
    bk(l)
    pendown()
    fd(l)
    def draw_tree(l, level):
    global r, g, b
    w = width()
    width(w * 3.0 / 4.0)
    r = r + 1
    g = g + 2
    b = b + 3
    pencolor(r % 200, g % 200, b % 200)
    lt(s)
    fd(l)
    if level < lv:
    draw_tree(l, level + 1)
    bk(l)
    rt(2 * s)
    fd(l)
    if level < lv:
    draw_tree(l, level + 1)
    bk(l)
    lt(s)
    width(w)
    speed("fastest")
    draw_tree(l, 4)
    done()

    以上是对 Tkinter 中常用控件的详细介绍,涵盖了 Button、Checkbutton、Radiobutton、Menu、Message 和 Canvas 的使用方法和特性。这些控件为构建用户友好的 GUI 应用程序提供了强大的工具。

    转载地址:http://wnofk.baihongyu.com/

    你可能感兴趣的文章
    python调用halcon
    查看>>
    python | doit,一个非常实用的 Python 库!
    查看>>
    python | easyocr,一个超厉害的 关于OCR的 Python 库!
    查看>>
    python | fastFM,一个高级的 Python 库!
    查看>>
    python | feature_engine,一个实用的 Python 库!
    查看>>
    python | filelock,一个超酷的 Python 库!
    查看>>
    python | fire,一个强大的 Python 库!
    查看>>
    python | flanker,一个神奇的 Python 库!
    查看>>
    python | flower,一个强大的 Python 库!
    查看>>
    python | funcy,一个超强的 提供函数式编程工具 Python 库!
    查看>>
    python | ggplot,一个超强的 Python 库!
    查看>>
    python | grab,一个强大的 Python 库!
    查看>>
    python | gunicorn,一个非常实用的 Python 库!
    查看>>
    python | h5py,一个无敌的关于 HDF5 的 Python 库!
    查看>>
    python | huey,一个非常厉害的 任务调度 Python 库!
    查看>>
    python | hypothesis,一个有趣的 Python 库!
    查看>>
    python | Indico,一个超酷的 Python 库!
    查看>>
    python | isort,一个有趣的 自动整理导入语句 的Python 库!
    查看>>
    python | jinja,一个超酷的 Python 库!
    查看>>
    python | joblib,一个强大的 Python 库!
    查看>>