前言:
透过简单的加减法,让自己熟悉如何活用tkinter的特殊变数。
工作环境:
-Windows 10
-Anaconda 2020.02
-Python 3.6.10
-Spyder 4.1.1
教程(1)-建立并布置物件:
如何建立tkinter的物件,并且布置在视窗上。
# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""# 汇入函式库import tkinter as tk# 宣告root = tk.Tk()# 视窗标题root.title('Lesson 1')# 视窗初始大小root.geometry('800x600')# 视窗[左右, 上下]是否可拉大拉小,若都为0则视窗右上角的最大化按钮会无法点击root.resizable(0, 1)# 建议标籤lab_result = tk.Label(root, text='666')# 建立按钮bt_plus = tk.Button(root, text='+1')bt_min = tk.Button(root, text='-1')# 为物件分配位置lab_result.pack()# 自动布置bt_plus.pack()bt_min.place(x=387, y=75)# 手动布置# 自动刷新画面root.mainloop()
教程(2)-如何为物件绑定事件并且宣告变数:
示範透过按钮来变更边谦上显示的数字,IntVar()是用来显示加减结果的,因为我们无法直接用一般变数来改变标籤显示结果:
# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""# 汇入函式库import tkinter as tkdef plus_(): global k k = k + 1 result.set(k) def min_(): global k k = k - 1 result.set(k) # 宣告root = tk.Tk()# 视窗标题root.title('Lesson 2')# 视窗初始大小root.geometry('800x600')# 视窗[左右, 上下]是否可拉大拉小,若都为0则视窗右上角的最大化按钮会无法点击root.resizable(0, 1)# 定义变数kk = 0# 定义tkinter专属变数resultresult = tk.IntVar()# 将变数k单次传值至tkinter专属变数resultresult.set(k)# 建立标籤lab_result = tk.Label(root, text='textvariable有优先权,所以这句不会显示', textvariable=result)# 建立按钮,并且绑定事件bt_plus = tk.Button(root, text='+1', command=plus_)bt_min = tk.Button(root, text='-1', command=min_)# 为物件分配位置lab_result.pack()# 自动布置bt_plus.pack()bt_min.place(x=387, y=75)# 手动布置# 自动刷新画面root.mainloop()
当然还有StrVar()可以用,只是记得要用int()作转换呦:
# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""# 汇入函式库import tkinter as tkdef plus_(): global k k = k + 1 result.set(int(k)) def min_(): global k k = k - 1 result.set(int(k)) # 宣告root = tk.Tk()# 视窗标题root.title('Lesson 1')# 视窗初始大小root.geometry('800x600')# 视窗[左右, 上下]是否可拉大拉小,若都为0则视窗右上角的最大化按钮会无法点击root.resizable(0, 1)# 定义变数kk = 0# 定义tkinter专属变数resultresult = tk.StringVar()# 将变数k单次传值至tkinter专属变数resultresult.set(int(k))# 建议标籤lab_result = tk.Label(root, text='textvariable有优先权', textvariable=result)# 建立按钮bt_plus = tk.Button(root, text='+1', command=plus_)bt_min = tk.Button(root, text='-1', command=min_)# 为物件分配位置lab_result.pack()# 自动布置bt_plus.pack()bt_min.place(x=387, y=75)# 手动布置# 自动刷新画面root.mainloop()