栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python+tkinter GUI程序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python+tkinter GUI程序

文章目录

目录

文章目录

前言

一、tkinter是什么?

二、使用步骤

1.引入库

2.创建一个GUI程序

3.Tkinter 组件

3.1、button 按钮

3.2、Lable 标签

3.3、Listbox   列表框

3.4、Menu  菜单

3.5、message  消息框

3.6、Radiobutton  单选框

3.7、Checkbutton 复选框

3.8、Scrollbar  滚动条

3.9、Toplevenl  二级窗口

3.10、canvas  画布


前言
  • Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。




一、tkinter是什么?

          Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序




二、使用步骤



1.引入库
from tkinter import *



2.创建一个GUI程序
import tkinter 
root = tkinter.Tk()  
root.title("TK标题")  # 设置tk标题
root.geometry("850x750+500+50")  # 宽850、高750、在屏幕500、50的位置显示
root.mainloop() # 进入消息循环

3.Tkinter 组件
  • Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:

    控件描述
    Button按钮控件;在程序中显示按钮。
    Canvas画布控件;显示图形元素如线条或文本
    Checkbutton多选框控件;用于在程序中提供多项选择框
    Entry输入控件;用于显示简单的文本内容
    frame框架控件;在屏幕上显示一个矩形区域,多用来作为容器
    Label标签控件;可以显示文本和位图
    Listbox列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
    Menubutton菜单按钮控件,用于显示菜单项。
    Menu菜单控件;显示菜单栏,下拉菜单和弹出菜单
    Message消息控件;用来显示多行文本,与label比较类似
    Radiobutton单选按钮控件;显示一个单选的按钮状态
    Scale范围控件;显示一个数值刻度,为输出限定范围的数字区间
    Scrollbar滚动条控件,当内容超过可视化区域时使用,如列表框。.
    Text文本控件;用于显示多行文本
    Toplevel容器控件;用来提供一个单独的对话框,和frame比较类似
    Spinbox输入控件;与Entry类似,但是可以指定输入范围值
    PanedWindowPanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
    Labelframelabelframe 是一个简单的容器控件。常用与复杂的窗口布局。
    tkMessageBox用于显示你应用程序的消息框。

    标准属性

    标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。

    属性描述
    Dimension控件大小;
    Color控件颜色;
    Font控件字体;
    Anchor锚点;
    Relief控件样式;
    Bitmap位图;
    Cursor光标;

3.1、button 按钮
Button(root, text="退出", command=quit).grid(row=0, column=0)  
# text:按钮显示的文本;command:点击后执行的方法

3.2、Lable 标签
Label(root, text="标签").grid(row=0, column=0, pady=5, padx=5)
# text:显示的文本,pady:与y轴隔开5个像素, padx:与x轴隔开5个像素

3.3、Listbox   列表框
from tkinter import *
root = Tk()
root.geometry("300x200+100+100")
l1 = Listbox(root)
l1.grid(padx=10)
for i in range(10):
    l1.insert(END,i*1000)
root.mainloop()

3.4、Menu  菜单
import tkinter as tk

def callback():
    print("~被调用了~")

root = tk.Tk()
# 创建一个顶级菜单
menubar = tk.Menu(root)

# 创建一个下拉菜单“文件”,然后将它添加到顶级菜单中
filemenu = tk.Menu(menubar, tearoff=False)
filemenu.add_command(label="打开", command=callback)
filemenu.add_command(label="保存", command=callback)
filemenu.add_separator()  #  分割线
filemenu.add_command(label="退出", command=root.quit)
menubar.add_cascade(label="文件", menu=filemenu)

# 创建另一个下拉菜单“编辑”,然后将它添加到顶级菜单中
editmenu = tk.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)

root.mainloop()

        

3.5、message  消息框
# 正常提示框
tkinter.messagebox.showinfo("提示框标题", "提示文本")

# 警告提示框
tkinter.messagebox.showwarning("提示框标题", "提示文本") 
 
# 错误提示框
tkinter.messagebox.showerror("提示框标题", "提示文本")
  
# 显示“是|否”,是:yes,否:no
tkinter.messagebox.askquestion("标题", "提示文本") 
 
# 显示“确定|取消”, 确定:True,取消:False
tkinter.messagebox.askokcancel("标题", "提示文本")
  
# 显示“是|否”,是:True,否:False
tkinter.messagebox.askyesno("标题","提示文本")  

# 显示“是|否|取消”, 是:True, 否:False, 取消:None
tkinter.messagebox.askyesnocancel("标题","提示文本") 

# 警告提示框,显示“重试|取消”, 重试:True, 取消:False  
tkinter.messagebox.askretrycancel("标题","提示文本")  

3.6、Radiobutton  单选框
import tkinter as tk

root = tk.Tk()

v = tk.IntVar()
#Radiobutto是单选框,只能选中一个
#选中哪一个按钮,会把value的值赋给v
for i in(("one", 1), ("two", 2), ("three", 3)):
    a1 = tk.Radiobutton(root, text=i[0], variable=v, value=i[1])
    a1.grid()

#显示v的值
l = tk.Label(root,textvariable=v)
l.grid()

tk.mainloop()

3.7、Checkbutton 复选框
import tkinter as tk
root = tk.Tk()
v = []
for i in range(4):  # 设置4个变量储存选择框选择状态
    v.append(tk.IntVar())

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

for index, name in enumerate(GIRLS):
    b = tk.Checkbutton(root, text=name, variable=v[index])  # 设置复选框,选择为1,不选为0
    b.pack(side=tk.LEFT)

for i in v:
    tk.Label(root, textvariable=i).pack(side=tk.LEFT)  # 用label显示选中状态

tk.mainloop()

3.8、Scrollbar  滚动条

Scrollbar 滚动条通常用于实现 listbox,canvas,text 文本框的滚动,也可以用于输入框的滚动设置,如果设置输入框的滚动只能设置 x 方向上的。
# -*- coding:utf-8-*-
from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("400x400")
root.columnconfigure(0, weight=1)

tv = ttk.Treeview(root, height=10, columns=('c1', 'c2', 'c3'))
for i in range(100):
    tv.insert('', i, values=('a' + str(i), 'b' + str(i), 'c' + str(i)))
tv.pack()

# ----vertical scrollbar------------
vbar = ttk.Scrollbar(root, orient=VERTICAL, command=tv.yview)  # 设置y垂直移动
tv.configure(yscrollcommand=vbar.set)
tv.grid(row=0, column=0, sticky=NSEW)
vbar.grid(row=0, column=1, sticky=NS)

# ----horizontal scrollbar----------
hbar = ttk.Scrollbar(root, orient=HORIZONTAL, command=tv.xview)  # 设置x水平移动
tv.configure(xscrollcommand=hbar.set)
hbar.grid(row=1, column=0, sticky=EW)

root.mainloop()

3.9、Toplevenl  二级窗口
from tkinter import *
def start():
    global top
    top = Toplevel()
    top.geometry("200x200+400+500")
    top.mainloop()

def stop():
    top.destroy()

root = Tk()
root.geometry("200x200+300+200")
Button(root, text="开个窗口", command=start).grid()
Button(root, text="关闭窗口", command=stop).grid()
root.mainloop()

3.10、canvas  画布
w = Canvas ( master, option=value, ... )
  • master: 按钮的父容器。

  • options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。

序号可选项 & 描述
1

bd

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

2

bg

背景色

3

confine

如果为 true (默认), 画布不能滚动到可滑动的区域外。

4

cursor

光标的形状设定,如arrow, circle, cross, plus 等

5

height

高度

6

highlightcolor

要高亮的颜色

7

relief

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

8

scrollregion

一个元组 tuple (w, n, e, s) ,定义了画布可滚动的最大区域,w 为左边,n 为头部,e 为右边,s 为底部。

9

width

画布在 X 坐标轴上的大小。

10

xscrollincrement

用于滚动请求水平滚动的数量值。

11

xscrollcommand

水平滚动条,如果画布是可滚动的,则该属性是水平滚动条的 .set()方法。

12

yscrollincrement

类似 xscrollincrement, 但是垂直方向。

13

yscrollcommand

垂直滚动条,如果画布是可滚动的,则该属性是垂直滚动条的 .set()方法。

 Canvas 组件支持以下标准选项:

arc − 创建一个扇形

coord = 10, 50, 240, 210
arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")

image − 创建图像

filename = PhotoImage(file = "sunshine.gif")
image = canvas.create_image(50, 50, anchor=NE, image=filename)

line − 创建线条

line = canvas.create_line(x0, y0, x1, y1, options)  # x0,y0为线段的起点,x1,y1为线段的终点

dash_line = canvas.create_line(x0, y0, x1, y1, dash=(4, 4))  # 虚线

oval − 创建一个圆

oval = canvas.create_oval(x0, y0, x1, y1, options)

polygon − 创建一个至少有三个顶点的多边形

oval = canvas.create_polygon(x0, y0, x1, y1,...xn, yn, options)

delete − 删除画布的组件

canvas.create_text(x, y, text="文本", tag="canvas")
canvas.create_text(x0, y0, x1, y1, tag="canvas")
canvas.delete("canvas")

itemconfigure − 配置画布中的组件

canvas = tkinter.Canvas(root)
canvas.grid()

def set(number):
    if number > 0:
        canvas.itemconfigure(t1, text="我是大于0", fill="red")  # t1是组件
    else:
        canvas.itemconfigure(t1, text="我是小于或等于0", fill="green")

t1 = canvas.create_text(100, 200, text="")
number = randint(-100, 100)
set(number)

bind − 获取鼠标位置

def moved(event):
    print(event.x, event.y)

canvas.bind("", moved)

       

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号