内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《程序设计基础-Pyhton》(高等教育出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《程序设计基础-Python》(高等教育出版社)一课一练的第七单元GUI界面设计的第6练,内容涵盖第七单元command属性处理单击事件相关内容。
《程序设计基础-Python》(高等教育出版社)第6练
第7单元 GUI界面设计
子任务六 command属性处理单击事件
1、 单项选择题(本题共3小题)
1. 下列控件中,不能通过 command 属性绑定单击事件的是( )
A. Button B. Radiobutton
C. Label D. Menu
2. 下列代码中,单击“+1”按钮后,Label显示的数字在原有基础上加1的是( )
A.
from tkinter import *
root = Tk()
num = 0
def add():
num += 1
lb["text"] = num
lb = Label(root, text=num)
btn = Button(root, text="+1", command=add)
lb.pack()
btn.pack()
root.mainloop()
B.
from tkinter import *
root = Tk()
def add():
num = int(lb["text"]) + 1
lb["text"] = num
lb = Label(root, text="0")
btn = Button(root, text="+1", command=add)
lb.pack()
btn.pack()
root.mainloop()
C.
from tkinter import *
root = Tk()
def add():
lb["text"] = int(lb["text"]) + 1
lb = Label(root, text="0")
btn = Button(root, text="+1", command=add())
lb.pack()
btn.pack()
root.mainloop()
D.
from tkinter import *
root = Tk()
def add(num):
num += 1
lb["text"] = num
lb = Label(root, text="0")
btn = Button(root, text="+1", command=lambda: add(int(lb["text"])))
lb.pack()
btn.pack()
root.mainloop()
3. 关于 command 属性绑定函数的说法,正确的是( )
A. 绑定的函数必须有返回值,否则 command 无法触发
B. 绑定多个函数时,需用 lambda 表达式包装
C. command 绑定的函数只能在控件单击时触发,无法手动调用
D. 同一控件的 command 属性只能绑定一个函数,无法绑定多个
二、判断题(本题共3小题)
1. command 属性绑定函数时,若函数需要参数,必须使用 lambda 表达式将其包装为无参数函数。( )
2. Radiobutton控件的 command 属性在控件被选中时触发,而Button控件的 command 在单击时触发。( )
3. 若 command 属性绑定的函数名后加了括号,则函数会在控件创建时立即执行,而非单击时执行。( )
三、简答题(本题共2小题)
1. 简述command属性使用方法。
2. 简述 command 属性绑定函数的两种常见错误及解决方法。
四、编程题(本题共2小题)
1. 编写代码创建一个窗口,包含1个Label控件和2个Button控件。要求:① 单击“单击我”按钮时,Label文本变为“按钮已单击!”;② 单击“关闭窗口”按钮时,关闭整个窗口;③ 所有控件用pack方式放置,间距为10像素。效果如图所示:
2. 编写代码创建一个窗口,包含3个Radiobutton控件、1个Label控件和1个Button控件。要求:① 3个Radiobutton为一组,无默认选中;② 单击“确认选择”按钮时,若已选中某个Radiobutton,Label文本变为“您选择的编程语言:***”;若未选中,Label文本变为“请先选择编程语言!”;③ 所有控件用grid布局,Label在(0,0)跨3列,Radiobutton在(1,0)、(1,1)、(1,2),Button在(2,0)跨3列。
效果如图:
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《程序设计基础-Pyhton》(高等教育出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《程序设计基础-Python》(高等教育出版社)一课一练的第七单元GUI界面设计的第6练,内容涵盖第七单元command属性处理单击事件相关内容。
《程序设计基础-Python》(高等教育出版社)第6练
第7单元 GUI界面设计
子任务六 command属性处理单击事件
1、 单项选择题(本题共3小题)
1. 下列控件中,不能通过 command 属性绑定单击事件的是( )
A. Button B. Radiobutton
C. Label D. Menu
【答案】C
【解析】“能够定义command的常见控件有:Button、Menu、Radiobutton控件”,Label控件无 command 属性,无法直接绑定单击事件,故答案为C。
2. 下列代码中,单击“+1”按钮后,Label显示的数字在原有基础上加1的是( )
A.
from tkinter import *
root = Tk()
num = 0
def add():
num += 1
lb["text"] = num
lb = Label(root, text=num)
btn = Button(root, text="+1", command=add)
lb.pack()
btn.pack()
root.mainloop()
B.
from tkinter import *
root = Tk()
def add():
num = int(lb["text"]) + 1
lb["text"] = num
lb = Label(root, text="0")
btn = Button(root, text="+1", command=add)
lb.pack()
btn.pack()
root.mainloop()
C.
from tkinter import *
root = Tk()
def add():
lb["text"] = int(lb["text"]) + 1
lb = Label(root, text="0")
btn = Button(root, text="+1", command=add())
lb.pack()
btn.pack()
root.mainloop()
D.
from tkinter import *
root = Tk()
def add(num):
num += 1
lb["text"] = num
lb = Label(root, text="0")
btn = Button(root, text="+1", command=lambda: add(int(lb["text"])))
lb.pack()
btn.pack()
root.mainloop()
【答案】B
【解析】command 绑定函数时:① 函数默认无参数,带参数需用lambda;② 函数名后不能加括号。A中 num 是局部变量,修改不生效;C中 command=add() 直接执行函数,初始为1;D中 add 函数修改的是参数 num ,不影响Label;B中通过 lb["text"] 获取/修改Label文本,正确,故答案为B。
3. 关于 command 属性绑定函数的说法,正确的是( )
A. 绑定的函数必须有返回值,否则 command 无法触发
B. 绑定多个函数时,需用 lambda 表达式包装
C. command 绑定的函数只能在控件单击时触发,无法手动调用
D. 同一控件的 command 属性只能绑定一个函数,无法绑定多个
【答案】B
【解析】command 绑定的函数无需返回值;同一控件的 command 可通过lambda绑定多个函数;绑定的函数可手动调用,C错误,故答案为B。
二、判断题(本题共3小题)
1. command 属性绑定函数时,若函数需要参数,必须使用 lambda 表达式将其包装为无参数函数。( )
【答案】正确
【解析】command 调用函数时默认无参数,若函数需参数,需用 lambda 表达式,故正确。
2. Radiobutton控件的 command 属性在控件被选中时触发,而Button控件的 command 在单击时触发。( )
【答案】正确
【解析】Button的 command 在单击时触发,Radiobutton的 command 在选中该控件时触发,故正确。
3. 若 command 属性绑定的函数名后加了括号,则函数会在控件创建时立即执行,而非单击时执行。( )
【答案】正确
【解析】command 需绑定“函数名”,加括号会使函数在赋值时直接执行,单击控件时无反应,故正确。
三、简答题(本题共2小题)
1. 简述command属性使用方法。
【答案】 command属性使用方法
def 函数名称():
代码块
widget=Button(master,command=函数名称,...)
当单击按钮控件的时候,Python就会调用该函数。
2. 简述 command 属性绑定函数的两种常见错误及解决方法。
【答案】① 错误1:函数名后加括号,导致函数在控件创建时立即执行,单击控件无反应;解决方法:绑定函数时仅写函数名,不加括号。
② 错误2:函数需要参数,但直接绑定,导致报错;解决方法:用 lambda 表达式包装为无参数函数、,将参数传入函数。
四、编程题(本题共2小题)
1. 编写代码创建一个窗口,包含1个Label控件和2个Button控件。要求:① 单击“单击我”按钮时,Label文本变为“按钮已单击!”;② 单击“关闭窗口”按钮时,关闭整个窗口;③ 所有控件用pack方式放置,间距为10像素。效果如图所示:
【答案】
from tkinter import *
root = Tk()
root.title("Button命令示例")
root.geometry("300x200")
#单击按钮触发的函数
def click_btn():
lb["text"] = "按钮已单击!"
#关闭窗口的函数
def close_window():
root.destroy() # 销毁窗口,关闭应用
Label控件
lb = Label(root, text="您还未单击按钮")
lb.pack(pady=10)
Button控件
click_btn = Button(root, text="单击我", command=click_btn)
click_btn.pack(pady=10)
close_btn = Button(root, text="关闭窗口", command=close_window)
close_btn.pack(pady=10)
root.mainloop()
2. 编写代码创建一个窗口,包含3个Radiobutton控件、1个Label控件和1个Button控件。要求:① 3个Radiobutton为一组,无默认选中;② 单击“确认选择”按钮时,若已选中某个Radiobutton,Label文本变为“您选择的编程语言:***”;若未选中,Label文本变为“请先选择编程语言!”;③ 所有控件用grid布局,Label在(0,0)跨3列,Radiobutton在(1,0)、(1,1)、(1,2),Button在(2,0)跨3列。
效果如图:
【答案】
from tkinter import *
root = Tk()
root.title("语言选择")
root.geometry("400x180")
#定义变量绑定Radiobutton
lang_var = StringVar()
#确认选择的函数
def confirm():
selected = lang_var.get()
if selected:
lang_lb["text"] = f"您选择的编程语言:{selected}"
else:
lang_lb["text"] = "请先选择编程语言!"
Label控件
lang_lb = Label(root, text="请选择编程语言")
lang_lb.grid(row=0, column=0, columnspan=3, padx=10, pady=10)
#Radiobutton控件
py_rbtn = Radiobutton(root, text="Python", variable=lang_var, value="Python")
py_rbtn.grid(row=1, column=0, padx=10, pady=10)
java_rbtn = Radiobutton(root, text="Java", variable=lang_var, value="Java")
java_rbtn.grid(row=1, column=1, padx=10, pady=10)
c_rbtn = Radiobutton(root, text="C++", variable=lang_var, value="C++")
c_rbtn.grid(row=1, column=2, padx=10, pady=10)
#确认按钮
confirm_btn = Button(root, text="确认选择", command=confirm)
confirm_btn.grid(row=2, column=0, columnspan=3, padx=10, pady=10)
root.mainloop()
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$