Tkinter 界面设计:使用网格布局均匀分布复选框
一种可能的解决方案是将所有的复选框放在一个网格布局中,使它们均匀分布在界面上。以下是示例代码:
import tkinter as tk
root = tk.Tk()
root.geometry('600x800')
root.title('Log Group Selector')
# Define log groups
log_groups = [
('AFD', 1),
('Sensor', 2),
('Tracker', 4),
('ISP', 8),
('Post Processor', 16),
('MemMgr', 32),
('Power', 64),
('HAL', 128),
('JPEG', 256),
('Stats', 512),
('CSL', 1024),
('Application', 2048),
('Utilities', 4096),
('Sync', 8192),
('MemSpy', 16384),
('Format', 32768),
('Core', 65536),
('HWL', 131072),
('CHI', 262144),
('DRQ', 524288),
('FD', 1048576),
('IQ module', 2097152),
('LRME', 4194304),
('CVP', 4194304),
('NCS', 8388608),
('Metadata', 16777216),
('AEC', 33554432),
('AWB', 67108864),
('AF', 134217728),
('SW Process', 268435456),
('Histogram Process', 536870912),
('BPS', 1073741824),
('Debug-Data Framework - 3A Debug-Data & Tuning-metadata', 2147483648),
('QSAT', 4294967296),
('QLL', 512),
('PSM', 8589934592),
('StatsNN', 17179869184),
('CRE', 34359738368)
]
# Create variables and checkboxes for each log group
var_list = []
checkbutton_list = []
for i, (lg, _) in enumerate(log_groups):
row, col = divmod(i, 3)
var = tk.IntVar()
var_list.append(var)
checkbutton_list.append(tk.Checkbutton(root, text=lg, variable=var))
checkbutton_list[-1].grid(row=row, column=col, padx=5, pady=5)
# Function to convert selected log groups to hex value
def get_hex_value():
hex_value = sum(var.get() * val for var, (_, val) in zip(var_list, log_groups))
hex_value_str = hex(hex_value)
print(hex_value_str)
# Button to get selected log groups as hex value
tk.Button(root, text='Get Hex Value', command=get_hex_value).grid(row=10, column=1, pady=20)
root.mainloop()
在这个解决方案中,我们使用了一个循环来创建所有的变量和复选框,并将它们放在一个网格布局中。我们还使用了 divmod 函数来计算每个复选框应该放在哪一行和列,并将 padx 和 pady 参数设置为 5 来增加复选框之间的间距。最后,我们使用 sum 函数和 zip 函数来计算选中的日志组的十六进制值。
原文地址: https://www.cveoy.top/t/topic/lEjR 著作权归作者所有。请勿转载和采集!