利用tkinter组件创建程序窗口。要求:
1、窗口标题:与时俱进
2、窗口大小:宽550、高380
3、窗口左边距=70,上边距=80
4、背景颜色:#F9DDA8
5、运行后不能改变窗口大小
程序保存到:s16t1.pyw
6、运行程序,浏览程序执行效果
【参考与提示】
Tk组件有以下内置函数:
1、title(s):设置窗口标题为字符串s。
2、geometry("WxH+L+T"):设置窗口宽为W、高为H、左边距为L、上边距为T。
示例:rt.geometry("300x200+50+50")
3、resizable(0,0):禁止改变窗口大小。
#s16t1.pyw
import tkinter as tk
root = tk.Tk( ) # 创建主窗口
root.title("与时俱进") # 设置窗口标题
root.geometry("550x380+70+80") # 设置窗口大小和位置(宽550、高380,左边距70,上边距80)
root.configure(bg="#F9DDA8") # 设置窗口背景颜色
root.resizable(False, False) # 禁止改变窗口大小
root.mainloop( ) # 进入主事件循环
任务2 用户界面设计-使用Label及Button组件
利用tkinter组件创建程序窗口。要求:
1、窗口放置一个Label组件,设置:
(1)显示内容:宝剑锋从磨砺出
(2)place布局:x=10,y=10
2、窗口放置一个Button组件,设置:
(1)按钮文本:关闭窗口
(2)宽度:10
(3)单击时关闭窗口,终止程序执行
(4)place布局:x=10,y=60
程序保存到:s16t2.pyw
3、运行程序,浏览程序执行效果。
【参考与提示】
1、创建Label组件对象时支持"text"命名参数,用于设置组件显示的内容。
2、Button组件对象支持以下命名参数:
(1)text:按钮显示的文本。
(2)width:设置按钮宽度(字符数)。
(3)command:单击时运行的函数。本题可指定为Tk组件的内置函数destroy。
3、组件均可通过place布局定位组件位置。
示例:bt.place(x=30,y=30)
import tkinter as tk
root = tk.Tk( )
root.title("与时俱进")
root.geometry("550x380+70+80")
root.configure(bg="#F9DDA8")
root.resizable(width=False, height=False)
# 创建Label组件
label = tk.Label(root, text="宝剑锋从磨砺出")
label.place(x=10, y=10)
# 创建Button组件,点击关闭窗口
button = tk.Button(root,text="关闭窗口",width=10,command=root.destroy)
button.place(x=10, y=60)
root.mainloop( )
任务3 用户界面设计-使用Entry及Text组件
利用tkinter组件创建程序窗口。要求:
1、窗口放置3个Entry组件,设置:
(1)宽度:12
(2)grid布局:分别占用0行的0、1、2列
2、窗口放置1个Text组件,设置:
(1)宽、高:40、11
(2)grid布局:1行0列,占3列
3、程序保存到:s16t3.pyw
4、运行程序,浏览程序执行效果。
【参考与提示】
1、创建Entry组件对象时支持"width"命名参数,用于设置组件显示的字符数。
2、Text组件对象支持以下命名参数:
(1)undo:设置是否开启撤消功能。
(2)width、height:设置宽高,为字符数。
3、组件均可通过grid布局定位组件位置,主要参数有:
(1)row、column:组件所在行、列。
(2)rowspan:组件占用行数。
(3)columnspan:组件占用列数。
(4)padx,pady:与其他组件的水平垂直距离。
(%)sticky:在单元格中的显示方式。
import tkinter as tk
root = tk.Tk( )
root.title("与时俱进")
root.geometry("550x380+70+80")
root.resizable(width=False, height=False)
# 创建3个Entry组件,使用grid布局
entry1 = tk.Entry(root, width=12)
entry1.grid(row=0, column=0, padx=5, pady=5)
entry2 = tk.Entry(root, width=12)
entry2.grid(row=0, column=1, padx=5, pady=5)
entry3 = tk.Entry(root, width=12)
entry3.grid(row=0, column=2, padx=5, pady=5)
# 创建Text组件,使用grid布局并跨3列
text = tk.Text(root, width=40, height=11)
text.grid(row=1, column=0, columnspan=3, padx=5, pady=5)
root.mainloop( )
任务4 用户界面设计-事件处理
利用tkinter组件创建程序窗口。要求:
1、窗口放置1个Entry组件,设置:
(1)组件变量:tt
(2)pack布局:占满窗口
(3)响应"<Return>"事件:在et上显示输入内容对应表达式的值。如et输入的内容是3+9-2*4,则按回车键后,et显示的内容是4。如果表达式错误,则显示"Failed"。
2、程序保存到:s16t4.pyw
3、运行程序,浏览程序执行效果
【参考与提示】
计算表达式的值:
1、Entry组件绑定事件。格式:
tt.bind(事件,回调函数)
2、定义回调函数。
(1)函数只能有一个参数,为事件对象。
(2)利用Entry组件的内置函数get得到输入的字符串s。
(3)利用Entry组件的内置函数delete删除et的全部内容。
(4)利用Entry组件的内置函数insert将表达式的值(使用eval函数计算)插入Entry组件的显示内容中。
import tkinter as tk
# 定义回调函数:处理表达式计算
def calculate(event):
expr = tt.get( ) # 获取输入内容
try:
result = eval(expr) # 计算表达式结果
tt.delete(0, tk.END) # 清空输入框
tt.insert(0, str(result)) # 显示计算结果
except:
tt.delete(0, tk.END) # 清空输入框
tt.insert(0, "Failed") # 显示错误信息
# 创建主窗口
root = tk.Tk( )
root.title("表达式计算器")
root.geometry("400x200")
root.resizable(width=False, height=False)
# 创建Entry组件,使用pack布局占满窗口
tt = tk.Entry(root, font=("Arial", 12))
tt.pack(fill=tk.X, expand=True, padx=10, pady=10) # 填满水平方向
# 绑定回车键事件
tt.bind("<Return>", calculate)
root.mainloop( )
任务5 用户界面设计-使用messagebox模块
利用tkinter组件创建程序窗口。要求:
1、窗口关闭时显示询问窗口:
(1)窗口标题:系统提示
(2)显示问号图标
(3)显示内容:是否结束?
(4)显示"是"和"否"两个按钮。单击"是"按钮则关闭程序。
2、程序保存到:s16t5.pyw
3、运行程序,浏览程序执行效果。
【参考与提示】
1、messagebox模块的函数askquestion可显示询问窗口,有"是"和"否"两个按钮。单击"是"按钮时函数返回"yes",否则为"no"。
2、Tk组件的protocol方法可设置窗口关闭时的回调函数。如:
rt.protocol("WM_DELETE_WINDOW",onQuit)
3、Tk组件的destroy方法可关闭窗口。
import tkinter as tk
from tkinter import messagebox
def on_quit( ):
# 弹出询问对话框
choice = messagebox.askquestion("系统提示", "是否结束?")
if choice == "yes":
root.destroy( ) # 关闭窗口并退出程序
root = tk.Tk( )
root.title("用户界面设计示例")
root.geometry("300x200")
# 设置窗口关闭时调用的函数
root.protocol("WM_DELETE_WINDOW", on_quit)
root.mainloop( )

