python - 如何在 Tkinter 中创建正确的 CheckButton?
问题描述
我试图根据我的设备中的物品CheckButton
创建一个。已创建,但并非其中的所有项目都在应用程序中可见。是不是因为我的物品太大了?tkinter
list
CheckButton
equipment
这是我的代码:
from tkinter import *
owner = ['Spain', 'United Kingdom', 'Malaysia']
vehicleid = ['C161', 'C162']
equipment = ['X-tron senistra beamer mode version 5.4433',
'Loadcell compact designer 2000 version 32.44',
'Streamcell highspeed collision extra large version 8.5']
window = Tk()
window.title("Running Python Script") # Create window
window.geometry('550x300') # Geo of the window
##These are the option menus
dd_owner = StringVar(window)
dd_owner.set(owner[0]) # the first value
w = OptionMenu(window, dd_owner, *owner)
w.grid(row=1, column=1)
dd_id = StringVar(window)
dd_id.set(vehicleid[0])
w0 = OptionMenu(window, dd_id, *vehicleid)
w0.grid(row=0, column=1)
#This is the CheckButton
dd_equipment = Checkbutton
for x in equipment:
dd_equipment = Checkbutton(window, text=x, variable=x)
dd_equipment.grid(row=2, column=1)
##The run button
run_list_button =Button(window, text="Send data of ID's to database!")
run_list_button.grid(column=0, row=3)
##These are the titles
l1 = Label(window, text='Select Owner', width=15)
l1.grid(row=1, column=0)
l0 = Label(window, text='Select vehicle id:', width = 30)
l0.grid(row=0, column=0)
l0 = Label(window, text='Select equipment:', width = 30)
l0.grid(row=2, column=0)
mainloop()
这是 tkinter 应用程序的外观:
解决方案
发生这种情况,因为在:
for x in equipment:
dd_equipment = Checkbutton(window, text=x, variable=x)
dd_equipment.grid(row=2, column=1)
您将每个 Checkbutton 打包到相同的位置。因此,在每次迭代中,之前的 Checkbutton 都会被替换,并且只显示最后一项 ( 'Streamcell highspeed collision extra large version 8.5'
) 的 Checkbutton。
例如,要更正此问题,您可以这样做:
for i,x in enumerate(equipment):
dd_equipment = Checkbutton(window, text=x, variable=x)
dd_equipment.grid(row=2+i, column=1, sticky=W)
推荐阅读
- amazon-s3 - S3 生命周期配置
- php - 如何更新 laravel-8 中的特定列值?
- javascript - 即使向下滚动,导航栏也会在第二页上出现一小段时间
- python - Python Django rest框架外部post api调用返回未经授权的错误
- jenkins - Jenkins Kubernetes Plugin PodTemplate 无法将工作空间从 master 映射到 pod,而是在管道中工作
- c++ - 在这种情况下对象是否被破坏?
- mysql-python - 在 python 中加载 mysqlsh 模块
- c# - Visual Studio c# winform 打开链接
- typescript - AWS CDK 管道构造:代码构建错误 254
- spring - 使用不同的配置 Spring Boot 减少我的内存占用