Guizero中按钮文本大小无法调整,按钮尺寸反而变大的问题
问题:Guizero中调整按钮文本大小导致按钮尺寸变大
我正在为痴呆症患者开发一款记忆测验应用——家属/亲友可预先将日常记忆内容录入SQL数据库,应用会据此向患者提问日常相关问题。用Guizero开发GUI时,尝试增大按钮文本尺寸,却出现按钮本身跟着变大的情况,相关代码如下:
box1=Box(Todays_Quiz, layout = "auto", width = 1000, height = 700) emptyspace =Text(box1, text="") question1= Text(box1, "What time did you wake up?", width = "fill") question1.bg= "#A1A9A9" question1.text_size= 20 emptyspace =Text(box1, text=""" """) wakeupAnswer1 = get_q1_answers(0) wakeupAnswer2 = get_q1_answers(1) wakeupAnswer3 = get_q1_answers(2) wakeup1 = PushButton(box1, width = 50, height = 5, text = wakeupAnswer1, command=change_score1) # correct answer emptyspace =Text(box1, text="") wakeup2 = PushButton(box1, width = 50, height = 5, text = wakeupAnswer2, command=next_question1) emptyspace =Text(box1, text="") wakeup3 = PushButton(box1, width = 50, height = 5, text = wakeupAnswer3, command=next_question1) wakeup1.bg="#fa7a7a" wakeup1.text_size = 15 wakeup2.bg="#fa7a7a" wakeup2.text_size =15 wakeup3.bg="#fa7a7a" wakeup3.text_size = 15
原因
Guizero的PushButton组件默认会根据文本尺寸自动调整自身大小,即便预先设置了width和height,修改text_size后,组件会重新计算所需尺寸并覆盖之前的手动设置。
解决方法
方法1:先设置文本尺寸,再固定按钮尺寸
调整代码顺序,先设置text_size,再指定width和height,让固定尺寸覆盖文本自动调整逻辑:
# 创建按钮时先不指定尺寸 wakeup1 = PushButton(box1, text = wakeupAnswer1, command=change_score1) wakeup1.bg="#fa7a7a" wakeup1.text_size = 15 # 再设置固定尺寸 wakeup1.width = 50 wakeup1.height = 5 wakeup2 = PushButton(box1, text = wakeupAnswer2, command=next_question1) wakeup2.bg="#fa7a7a" wakeup2.text_size =15 wakeup2.width = 50 wakeup2.height = 5 wakeup3 = PushButton(box1, text = wakeupAnswer3, command=next_question1) wakeup3.bg="#fa7a7a" wakeup3.text_size = 15 wakeup3.width = 50 wakeup3.height = 5
方法2:使用text_width控制文本显示宽度
设置文本的显示宽度,让文本自动换行,同时保持按钮尺寸不变:
wakeup1 = PushButton(box1, width = 50, height = 5, text = wakeupAnswer1, command=change_score1) wakeup1.bg="#fa7a7a" wakeup1.text_size = 15 wakeup1.text_width = 48 # 留出少量边距,避免文本撑满按钮
方法3:锁定组件尺寸
通过resize方法禁止按钮自动调整宽高:
wakeup1 = PushButton(box1, width = 50, height = 5, text = wakeupAnswer1, command=change_score1) wakeup1.bg="#fa7a7a" wakeup1.text_size = 15 wakeup1.resize(False, False) # 禁止宽度和高度自动调整
内容的提问来源于stack exchange,提问作者Aaisha Garda
相关产品推荐
相关产品推荐

