当前位置:   article > 正文

python学习(八)----tkinter的基本使用_tk.tk()

tk.tk()

一、tkinter模块元素

在这里插入图片描述

二、相关实现

1、Button窗口部件实现点击时显示不同的文本

import tkinter as tk

window = tk.Tk()    # 创建一个窗口
window.title("tkinter project!")    # 给窗口的可视化起名字
window.geometry('700x300')     # 设定窗口的大小(长 * 宽)

var = tk.StringVar()	# 将label标签的内容设置为字符类型,用var来接收hitfun函数的传出内容用以显示在标签上
label1 = tk.Label(window, textvariable=var, bg='green', fg='white', font=('楷体', 18), width=30, height=2)
label1.pack()

hit = False
def hitfun():
    global hit
    if hit == False:
        hit = True
        var.set("嘿嘿")
    else:
        hit = False
        var.set("哈哈")

button1 = tk.Button(window, text="点一下试试看!", bg = "purple",font=('Arial', 12), width=15, height=1, command=hitfun)
button1.pack()

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

运行结果:
第一次点击

在这里插入图片描述
第二次点击:
在这里插入图片描述
二、Entry窗口部件
 说明:Entry是tkinter类中提供的的一个单行文本输入域,用来输入显示一行文本,收集键盘输入(类似 HTML 中的 text)。
2.1 创建一个登录界面

import tkinter as tk

window = tk.Tk()    # creat a window
window.title("tkinter project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

account = tk.Entry(window, show=None, font=("楷体", 14))  # 明文显示
password = tk.Entry(window, show="*", font=("楷体", 14))  # 暗文显示

account.pack()
password.pack()
button = tk.Button(window, text="登录", fg="red")
button.pack()

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

显示结果:
在这里插入图片描述
2.2指定位置插入输入的内容

import tkinter as tk

window = tk.Tk()    # creat a window

window.title("tkinter project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

account = tk.Entry(window, show=None, font=("楷体", 14))  # 明文显示
account.pack()

# 创建一个文本框
t = tk.Text(window, height=3)
t.pack()

# 在鼠标焦点处插入输入内容
def insert_point():
    var = account.get()
    t.insert('insert', var)

# 在文本框内容最后接着插入输入内容
def insert_end():
    var = account.get()
    t.insert("end", var)

button1 = tk.Button(window, text="在光标处插入内容", fg="red", command=insert_point)
button1.pack()
button2 = tk.Button(window, text="在最后插入内容", fg="red", command=insert_end)
button2.pack()

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

显示结果:
在光标处插入内容

在这里插入图片描述
在末尾插入内容
在这里插入图片描述
三、Listbox窗口部件
说明:Text是tkinter类中提供的的列表框部件,显示供选方案的一个列表。listbox能够被配置来得到radiobutton或checklist的行为。

import tkinter as tk

window = tk.Tk()    # creat a window

window.title("tkinter project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

var1 = tk.StringVar()        # 创建变量,用var1用来接收鼠标点击具体选项的内容
label = tk.Label(window, textvariable=var1, bg='green', font=('楷体', 14), width=3)
label.pack()

# 创建Listbox并为其添加内容
var2 = tk.StringVar()
a = (1, 2, 3, 4, 5)
var2.set(a)
lb = tk.Listbox(window, listvariable=var2)  # 将var2的值赋给Listbox
lb.pack()
'''
    lb.insert(1, 'first')       # 在第一个位置加入'first'字符
    lb.insert(2, 'second')      # 在第二个位置加入'second'字符
    lb.delete(2)                # 删除第二个位置的字符
'''

# 创建一个方法用于按钮的点击事件
def print_selection():
    value = lb.get(lb.curselection())  # 获取当前选中的文本
    var1.set(value)

button = tk.Button(window, text='显示选择', width=10, height=2, command=print_selection)
button.pack()

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

显示结果:
在这里插入图片描述
四、Radiobutton窗口部件
说明:
1、Radiobutton:代表一个变量,它可以有多个值中的一个。点击它将为这个变量设置值,并且清除与这同一变量相关的其它radiobutton。
2、在有一个很多内容选项组成的选项列表提供用户选择时会用到,用户一次只能选择其中一个,不能多选。

import tkinter as tk

window = tk.Tk()    # creat a window

window.title("Tkinter project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

var = tk.StringVar()    # 定义一个var用来将radiobutton的值和Label的值联系在一起
label = tk.Label(window, bg="green", width=12, height=2, text="empty", font=('楷体', 15))
label.pack()

#   定义选项触发函数功能
def print_selection():
    label.config(text='你已选择'+var.get())

# 创建三个radiobutton选项,其中variable=var, value='A'的意思就是,当我们鼠标选中了其中一个选项,把value的值A放到变量var中,然后赋值给variable
a = tk.Radiobutton(window, text='A', variable=var, value='A', command=print_selection)
a.pack()
b = tk.Radiobutton(window, text='B', variable=var, value='B', command=print_selection)
b.pack()
c = tk.Radiobutton(window, text='C', variable=var, value='C', command=print_selection)
c.pack()

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

结果显示:
在这里插入图片描述
五、 Checkbutton窗口部件
说明:代表一个变量,它有两个不同的值。点击这个按钮将会在这两个值间切换,选择和取消选择。

在这里插入代码片import tkinter as tk

window = tk.Tk()    # creat a window

window.title("Tkinter project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

label = tk.Label(window, bg='yellow', width=20, text="请选择")
label.pack()

def print_selection():
    if (var1.get() == 1) & (var2.get() == 0):  # 如果选中第一个选项,未选中第二个选项
        label.config(text='我只喜欢python ')
    elif (var1.get() == 0) & (var2.get() == 1):  # 如果选中第二个选项,未选中第一个选项
        label.config(text='我只喜欢c++')
    elif (var1.get() == 0) & (var2.get() == 0):  # 如果两个选项都未选中
        label.config(text='我都不喜欢')
    else:
        label.config(text='两个我都喜欢')  # 如果两个选项都选中

var1 = tk.IntVar()  # 定义var1和var2整型变量用来存放选择行为返回值
var2 = tk.IntVar()

# 传值原理类似于radiobutton部件
c1 = tk.Checkbutton(window, text='Python', variable=var1, onvalue=1, offvalue=0, command=print_selection)
c1.pack()
c2 = tk.Checkbutton(window, text='C++', variable=var2, onvalue=1, offvalue=0, command=print_selection)
c2.pack()


window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

显示结果
在这里插入图片描述
在这里插入图片描述
六、Scale窗口部件
说明:尺度(拉动条),允许你通过滑块来设置一数字值。

在这里插入代码片import tkinter as tk

window = tk.Tk()    # creat a window

window.title("Tkinter project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

# 在图形界面上创建一个标签label用以显示并放置
label = tk.Label(window, text="拖动滑条取值", bg="green", fg="black", font=("楷体", 14), width=16, height=2)
label.pack()
def print_selection(value):
    label.config(text="你已经选择了"+value)

# 创建一个尺度滑条,长度500字符,从0开始10结束,以1为刻度,精度为0.1,触发调用print_selection函数
t = tk.Scale(window, label='取值范围如下', font=("楷体", 14), from_=0, to=10, orient=tk.HORIZONTAL, length = 500, showvalue=1, tickinterval=1, resolution=0.1, command=print_selection)
t.pack()
window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

显示结果为:
在这里插入图片描述
七、Canvas窗口部件
说明:提供绘图功能(直线、椭圆、多边形、矩形) 可以包含图形或位图,用来绘制图表和图,创建图形编辑器,实现定制窗口部件。

import tkinter as tk
window = tk.Tk()    # creat a window

window.title("Tkinter project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

# 在图形界面上创建 500 * 200 大小的画布并放置各种元素
canvas = tk.Canvas(window, bg="green", height=560, width=650)

# 图片位置(相对路径,与.py文件同一文件夹下,也可以用绝对路径,需要给定图片具体绝对路径)
image_file = tk.PhotoImage(file='1.gif')   # 此处只能使用GIF格式的图片

# 图片锚定点(n图片顶端的中间点位置)放在画布(250,0)坐标处
image = canvas.create_image(250, 0, anchor='n', image=image_file)

# 定义多边形参数,然后在画布上画出指定图形
x0, y0, x1, y1 = 100, 100, 150, 150
# 画直线
line = canvas.create_line(x0-50, y0-50, x1-50, y1-50, fill='red')
# 画圆 用黄色填充
oval = canvas.create_oval(x0+120, y0+50, x1+120, y1+50, fill='red')
# 画扇形 从0度打开收到180度结束
arc = canvas.create_arc(x0, y0+50, x1, y1+50, start=0, extent=180, fill='red')
# 画矩形正方形
rect = canvas.create_rectangle(330, 30, 330+20, 30+20, fill='red')
canvas.pack()

def move():
    # 移动四个图形,按每次(x=20, y=20)步长进行移动
    canvas.move(rect, 20, 20)
    canvas.move(arc, 20, 20)
    canvas.move(oval, 20, 20)
    canvas.move(line, 20, 20)

# 定义一个按钮用来移动指定图形的在画布上的位置
b = tk.Button(window, text='点击移动图形', command=move)
b.pack()

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

显示结果为
在这里插入图片描述
八、Menu窗口部件
说明:菜单条,用来实现下拉和弹出式菜单,点下菜单后弹出的一个选项列表,用户可以从中选择

import tkinter as tk
window = tk.Tk()    # creat a window

window.title("Tkinter project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

# 在图形界面上创建一个标签用以显示内容并放置
label = tk.Label(window, text="我的目录", bg="green").pack()

# 定义一个函数功能,用来代表菜单选项的功能,这里为了操作简单,定义的功能比较简单
def fun():
    print("hello python!")

# 创建一个菜单栏,这里我们可以把他理解成一个容器,在窗口的上方
menu = tk.Menu(window)

# 创建一个File菜单项(默认不下拉,下拉内容包括New,Open,Save,Exit功能项)
filemenu = tk.Menu(menu, tearoff=0)

# 将上面定义的空菜单命名为File,放在菜单栏中,就是装入那个容器中
menu.add_cascade(label='文件', menu=filemenu)

# 在File中加入New、Open、Save等小菜单,即我们平时看到的下拉菜单,每一个小菜单对应命令操作。
filemenu.add_command(label='新建', command=fun)
filemenu.add_command(label='打开', command=fun)
filemenu.add_command(label='保存', command=fun)

filemenu.add_separator()  # 添加一条分隔线

filemenu.add_command(label='退出', command=window.quit)  # 用tkinter里面自带的quit()函数

# 创建一个Edit菜单项(默认不下拉,下拉内容包括Cut,Copy,Paste功能项)
editmenu = tk.Menu(menu, tearoff=0)

# 将上面定义的空菜单命名为 Edit,放在菜单栏中,就是装入那个容器中
menu.add_cascade(label='编辑', menu=editmenu)

# 同样的在 Edit 中加入Cut、Copy、Paste等小命令功能单元,如果点击这些单元, 就会触发fun的功能
editmenu.add_command(label='剪切', command=fun)
editmenu.add_command(label='复制', command=fun)
editmenu.add_command(label='粘贴', command=fun)

# 创建第二级菜单,即菜单项里面的菜单
submenu = tk.Menu(filemenu)  # 和上面定义菜单一样,不过此处实在File上创建一个空的菜单
filemenu.add_cascade(label='Import', menu=submenu, underline=0)  # 给放入的菜单submenu命名为Import

# 创建第三级菜单命令,即菜单项里面的菜单项里面的菜单命令
submenu.add_command(label='Submenu_1', command=fun)  # 这里和上面创建原理也一样,在Import菜单项中加入一个小菜单命令Submenu_1

# 创建菜单栏完成后,配置让菜单栏menu显示出来
window.config(menu=menu)

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

显示结果:
在这里插入图片描述
九、messageBox窗口部件
说明:
消息框,用于显示你应用程序的消息框。(Python2中为tkMessagebox),其实这里的messageBox就是我们平时看到的弹窗。 我们首先需要定义一个触发功能,来触发这个弹窗,这里我们就放上以前学过的button按钮,通过触发功能,调用messagebox吧,点击button按钮就会弹出提示对话框

import tkinter as tk
import tkinter.messagebox  # 要使用messagebox先要导入模块

window = tk.Tk()    # creat a window

window.title("tk project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)
def fun1():
    print("hello")
# 定义触发函数功能
def fun():

    # 提示信息对话窗
    tk.messagebox.showinfo(title='Hi', message='你好!')

    # 提出警告对话窗
    tk.messagebox.showwarning(title='Hi', message='有警告!')

    # 提出错误对话窗
    tk.messagebox.showerror(title='Hi', message='出错了!')

    # 询问选择对话窗return 'yes', 'no'
    print(tk.messagebox.askquestion(title='Hi', message='你好!'))

    # return 'True', 'False'
    print(tk.messagebox.askyesno(title='Hi', message='你好!'))

    # return 'True', 'False'
    print(tk.messagebox.askokcancel(title='Hi', message='你好!'))

# 在图形界面上创建一个标签用以显示内容并放置
tk.Button(window, text="点击我", bg='purple', font=('楷体', 14), command=fun).pack()

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
十、窗口部件三种放置方式pack/grid/place
1、 Grid:The Grid Geometry Manager

import tkinter as tk

window = tk.Tk()    # creat a window

window.title("tk project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

for i in range(5):
    for j in range(5):
        tk.Label(window, text=1).grid(row=i, column=j, padx=10, pady=10, ipadx=10, ipady=10 )
'''
   创建一个三行三列的表格,其实 grid 就是用表格的形式定位的。
   row 为行,colum 为列,padx 就是单元格左右间距,
   pady 就是单元格上下间距,ipadx是单元格内部元素与单元格的左右间距,
   ipady是单元格内部元素与单元格的上下间距。
'''

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

显示结果
在这里插入图片描述
2、Pack:The Pack Geometry Manager

import tkinter as tk

window = tk.Tk()    # creat a window

window.title("tk project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

# pack 放置方法
# 上
tk.Label(window, text='P', fg='red').pack(side='top')

# 下
tk.Label(window, text='P', fg='red').pack(side='bottom')

# 左
tk.Label(window, text='P', fg='red').pack(side='left')

# 右
tk.Label(window, text='P', fg='red').pack(side='right')


window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

显示结果:
在这里插入图片描述
3、Place:The Place Geometry Manager
说明:给精确的坐标来定位,如此处给的(50, 100),就是将这个部件放在坐标为(x=50, y=100)的这个位置, 后面的参数 anchor=‘nw’,就是前面所讲的锚定点是西北角。

import tkinter as tk

window = tk.Tk()    # creat a window

window.title("tk project!")    # 给窗口的可视化起名字
window.geometry('500x300')     # 设定窗口的大小(长 * 宽)

# anchor可以等于 n,s,w,e,nw,ne,sw,se分别对应笛卡尔坐标里面的八个方向
tk.Label(window, text="hello python!", font=('楷体', 14)).place(x=100, y=50, anchor='n')

window.mainloop()
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

显示结果:
在这里插入图片描述

十一、以上的学习均参考于Python GUI之tkinter窗口视窗教程大集合

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/132845
推荐阅读
相关标签
  

闽ICP备14008679号