内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《程序设计基础-Pyhton》(高等教育出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《程序设计基础-Python》(高等教育出版社)一课一练的第七单元GUI界面设计的第5练,内容涵盖第七单元控件布局管理相关内容。
《程序设计基础-Python》(高等教育出版社)第5练
第7单元 GUI界面设计
子任务五 控件布局管理
1、 单项选择题(本题共4小题)
1. 下列布局方式中,适合制作表格类界面的是( )
A. pack B. grid
C. place D. 三种都适合
2. pack布局中,设置控件沿窗口左侧排列的属性是( )
A. side="left" B. align="left"
C. anchor="w" D. direction="left"
3. grid布局中, columnspan 属性的作用是( )
A. 设置控件所在的列号 B. 设置控件占的列数
C. 设置控件与列边缘的距离 D. 设置列的宽度
4. place布局中,若要将控件放置在窗口(宽500,高300)的中心位置(控件宽100,高50),下列参数设置正确的是( )
A. x=200, y=125, width=100, height=50
B. x=250, y=150, width=100, height=50
C. x=100, y=50, width=100, height=50
D. x=0, y=0, width=100, height=50
二、判断题(本题共3小题)
1. pack布局的 fill="both" 属性表示控件在水平和垂直方向都跟随父容器拉伸。( )
2. grid布局中,控件的行号和列号必须从0开始,且不能跳过。( )
3. place布局的 x 和 y 属性是相对于父容器左上角的坐标,单位为像素,与控件的实际尺寸无关。( )
三、简答题(本题共2小题)
1. 简述pack、grid、place三种布局方式的核心特点及适用场景。
2. 列举grid布局的至少5个常用参数及作用。
四、编程题(本题共1小题)
编写代码创建一个窗口,用grid布局实现以下界面:① 1个Label控件里面文本为“学生成绩录入”,字体“宋体”16号,跨3列,位于第0行第0列;② 2个Label控件里面文本分别为“姓名:”“成绩:”,分别位于第1行第0列、第2行第0列;③ 2个宽20的Entry控件,分别位于第1行第1列、第2行第1列要求成绩Entry只允许输入数字;④ 2个Button控件一个设置为“提交”另一个设置为“重置”,分别位于第3行第1列、第3行第2列;⑤ 所有控件的 padx 和 pady 均为10像素。
设置效果如图所示:
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《程序设计基础-Pyhton》(高等教育出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《程序设计基础-Python》(高等教育出版社)一课一练的第七单元GUI界面设计的第5练,内容涵盖第七单元控件布局管理相关内容。
《程序设计基础-Python》(高等教育出版社)第5练
第7单元 GUI界面设计
子任务五 控件布局管理
1、 单项选择题(本题共4小题)
1. 下列布局方式中,适合制作表格类界面的是( )
A. pack B. grid
C. place D. 三种都适合
【答案】B
【解析】grid布局采用“行列网格”结构,通过 row 和 column 确定控件位置,适合规整的表格类布局;pack按顺序排列,place按绝对位置,均不适合表格,故答案为B。
2. pack布局中,设置控件沿窗口左侧排列的属性是( )
A. side="left" B. align="left"
C. anchor="w" D. direction="left"
【答案】A
【解析】pack布局的 side 属性用于指定控件的排列方向,可选“left”、“right”、“top”、“bottom”,默认“top”; anchor 用于控件在父容器中的对齐方式,故答案为A。
3. grid布局中, columnspan 属性的作用是( )
A. 设置控件所在的列号 B. 设置控件占的列数
C. 设置控件与列边缘的距离 D. 设置列的宽度
【答案】B
【解析】grid布局的 columnspan 是“正整数,设置控件占的列数”。
4. place布局中,若要将控件放置在窗口(宽500,高300)的中心位置(控件宽100,高50),下列参数设置正确的是( )
A. x=200, y=125, width=100, height=50
B. x=250, y=150, width=100, height=50
C. x=100, y=50, width=100, height=50
D. x=0, y=0, width=100, height=50
【答案】A
【解析】place的 x / y 是控件左上角坐标,窗口中心的控件左上角坐标计算为:x=(窗口宽-控件宽)/2=(500-100)/2=200,y=(窗口高-控件高)/2=(300-50)/2=125,故答案为A。
二、判断题(本题共3小题)
1. pack布局的 fill="both" 属性表示控件在水平和垂直方向都跟随父容器拉伸。( )
【答案】正确
2. grid布局中,控件的行号和列号必须从0开始,且不能跳过。( )
【答案】错误
【解析】grid的 row 和 column 是“非负整数”,允许跳过行号/列号,未设置的行/列会自动调整高度/宽度为0,不影响布局,故错误。
3. place布局的 x 和 y 属性是相对于父容器左上角的坐标,单位为像素,与控件的实际尺寸无关。( )
【答案】正确
【解析】place的 x / y 是“控件基准点位于窗口左上角的横/纵坐标”,单位像素,仅确定控件位置,与控件尺寸 width / height 无关,故正确。
三、简答题(本题共2小题)
1. 简述pack、grid、place三种布局方式的核心特点及适用场景。
【答案】
① pack布局:核心特点是“按添加顺序自动排列”,通过 side 、 fill 、 expand 控制布局;适用场景:少量控件的快速排序,无需精确控制位置的简单界面。
② grid布局:核心特点是“按行列网格排列”,通过 row 、 column 、 columnspan 、 rowspan 确定位置;
适用场景:表格类界面、控件需要规整排列的场景。
③ place布局:核心特点是“显式指定绝对位置或尺寸”,通过 x / y =、 width / height =精确控制;
适用场景:需要将控件固定在特定位置的场景,对位置精度要求高的界面。
2. 列举grid布局的至少5个常用参数及作用。
【答案】① row :非负整数,指定控件所在的行号,必选参数;
② column :非负整数,指定控件所在的列号,必选参数;
③ columnspan :正整数,设置控件占的列数;
④ rowspan :正整数,设置控件占的行数;
⑤ sticky :指定控件在单元格内的对齐方式,用N、S、W、E组合,默认居中;
⑥ padx :非负整数,控件与左右相邻控件或父容器边缘的距离;
⑦ pady :非负整数,控件与上下相邻控件或父容器边缘的距离;
⑧ ipadx :非负整数,控件内文本与控件左右边框的水平距离;
⑨ ipady :非负整数,控件内文本与控件上下边框的垂直距离。
四、编程题(本题共1小题)
编写代码创建一个窗口,用grid布局实现以下界面:① 1个Label控件里面文本为“学生成绩录入”,字体“宋体”16号,跨3列,位于第0行第0列;② 2个Label控件里面文本分别为“姓名:”“成绩:”,分别位于第1行第0列、第2行第0列;③ 2个宽20的Entry控件,分别位于第1行第1列、第2行第1列要求成绩Entry只允许输入数字;④ 2个Button控件一个设置为“提交”另一个设置为“重置”,分别位于第3行第1列、第3行第2列;⑤ 所有控件的 padx 和 pady 均为10像素。
设置效果如图所示:
【答案】
from tkinter import *
root = Tk()
root.title("学生成绩录入")
root.geometry("400x250")
title_lb = Label(root, text="学生成绩录入", font=("宋体", 16))
title_lb.grid(row=0, column=0, columnspan=3, padx=10, pady=10)
# 姓名行
name_lb = Label(root, text="姓名:")
name_lb.grid(row=1, column=0, padx=10, pady=10)
name_entry = Entry(root, width=20)
name_entry.grid(row=1, column=1, padx=10, pady=10)
# 成绩行
score_lb = Label(root, text="成绩:")
score_lb.grid(row=2, column=0, padx=10, pady=10)
score_entry = Entry(root, width=20)
def only_number(event):
if not (event.char.isdigit() or event.keysym == "BackSpace"):
return "break" # 阻止非数字输入
score_entry.bind("<KeyPress>", only_number) # 补充事件码
score_entry.grid(row=2, column=1, padx=10, pady=10)
# 按钮行
submit_btn = Button(root, text="提交")
submit_btn.grid(row=3, column=1, padx=10, pady=10)
reset_btn = Button(root, text="重置")
def reset():
name_entry.delete(0, END)
score_entry.delete(0, END)
reset_btn.config(command=reset)
reset_btn.grid(row=3, column=2, padx=10, pady=10)
root.mainloop()
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$