python+tkinter GUI程序


前言

  • 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("<Motion>", moved)

       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值