Python tkinter 界面软件:配置图像数据端口
以下是一个简单的 Python tkinter 界面软件代码,实现了配置图像数据端口的功能:
import tkinter as tk
# 定义变量
autoImageDump = 0
dumpInputatOutput = 0
autoInputImageDumpMask = 0
autoImageDumpMask = 0
autoImageDumpIFEinputPortMask = 0
autoImageDumpIFEoutputPortMask = 0
# 定义点击事件处理函数
def handle_checkbutton(var, val):
global autoImageDump, dumpInputatOutput, autoInputImageDumpMask, autoImageDumpMask, autoImageDumpIFEinputPortMask, autoImageDumpIFEoutputPortMask
# 更新变量值
if var == var_autoImageDump:
autoImageDump = val
elif var == var_dumpInputatOutput:
dumpInputatOutput = val
elif var in var_input_ports:
if val:
autoInputImageDumpMask |= var_input_ports[var]
else:
autoInputImageDumpMask &= ~var_input_ports[var]
elif var in var_output_ports:
if val:
autoImageDumpMask |= var_output_ports[var]
else:
autoImageDumpMask &= ~var_output_ports[var]
elif var in var_ife_input_ports:
if val:
autoImageDumpIFEinputPortMask |= var_ife_input_ports[var]
else:
autoImageDumpIFEinputPortMask &= ~var_ife_input_ports[var]
elif var in var_ife_output_ports:
if val:
autoImageDumpIFEoutputPortMask |= var_ife_output_ports[var]
else:
autoImageDumpIFEoutputPortMask &= ~var_ife_output_ports[var]
# 更新Label1的显示文本
text = ''
if autoImageDump:
text += 'autoImageDump=1 '
else:
text += 'autoImageDump=0 '
if dumpInputatOutput:
text += 'dumpInputatOutput=1 '
else:
text += 'dumpInputatOutput=0 '
if autoInputImageDumpMask:
text += 'autoInputImageDumpMask=' + hex(autoInputImageDumpMask) + ' '
if autoImageDumpMask:
text += 'autoImageDumpMask=' + hex(autoImageDumpMask) + ' '
if autoImageDumpIFEinputPortMask:
text += 'autoImageDumpIFEinputPortMask=' + hex(autoImageDumpIFEinputPortMask) + ' '
if autoImageDumpIFEoutputPortMask:
text += 'autoImageDumpIFEoutputPortMask=' + hex(autoImageDumpIFEoutputPortMask)
label1.config(text=text)
# 创建主窗口
root = tk.Tk()
root.title('界面软件')
# 创建控件
label1 = tk.Label(root, text='', font=('Arial', 12), width=60)
var_autoImageDump = tk.BooleanVar()
checkbutton_autoImageDump = tk.Checkbutton(root, text='autoImageDump', variable=var_autoImageDump, onvalue=True, offvalue=False, command=lambda: handle_checkbutton(var_autoImageDump, var_autoImageDump.get()))
var_dumpInputatOutput = tk.BooleanVar()
checkbutton_dumpInputatOutput = tk.Checkbutton(root, text='dumpInputatOutput', variable=var_dumpInputatOutput, onvalue=True, offvalue=False, command=lambda: handle_checkbutton(var_dumpInputatOutput, var_dumpInputatOutput.get()))
var_input_ports = {}
checkbutton_input_ports = []
for name, value in {
'IFE': 0x1,
'IPE': 0x2,
'BPS': 0x4,
'JPEG': 0x8,
'FDHw': 0x10,
'LRME': 0x20,
'RANSAC': 0x40,
'ChiNodes': 0x80,
'CVP': 0x100,
'OPE': 0x400,
'QSAT': 0x800,
'others nodes': 0x40000000,
}.items():
var_input_ports[name] = value
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text=name, variable=var, onvalue=True, offvalue=False, command=lambda val, var=var: handle_checkbutton(var, var.get()))
checkbutton_input_ports.append(checkbutton)
var_output_ports = {}
checkbutton_output_ports = []
for name, value in {
'IFE': 0x1,
'IPE': 0x2,
'BPS': 0x4,
'JPEG': 0x8,
'FDHw': 0x10,
'LRME': 0x20,
'RANSAC': 0x40,
'ChiNodes': 0x80,
'CVP': 0x100,
'TFE': 0x200,
'OPE': 0x400,
'QSAT': 0x800,
'other nodes': 0x40000000,
}.items():
var_output_ports[name] = value
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text=name, variable=var, onvalue=True, offvalue=False, command=lambda val, var=var: handle_checkbutton(var, var.get()))
checkbutton_output_ports.append(checkbutton)
var_ife_input_ports = {}
checkbutton_ife_input_ports = []
for name, value in {
'CSIDTPG': 0x1,
'CAMIFTPG': 0x2,
'Sensor': 0x4,
'RDI0': 0x8,
'RDI1': 0x10,
'RDI2': 0x20,
'DualPD': 0x40,
'ALLports': 0x7F,
}.items():
var_ife_input_ports[name] = value
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text=name, variable=var, onvalue=True, offvalue=False, command=lambda val, var=var: handle_checkbutton(var, var.get()))
checkbutton_ife_input_ports.append(checkbutton)
var_ife_output_ports = {}
checkbutton_ife_output_ports = []
for name, value in {
'Full': 0x1,
'DS4': 0x2,
'DS16': 0x4,
'CAMIFRaw': 0x8,
'LSCRaw': 0x10,
'GTMRaw': 0x20,
'FD': 0x40,
'PDAF': 0x80,
'RDI0': 0x100,
'RDI1': 0x200,
'RDI2': 0x400,
'RDI3': 0x800,
}.items():
var_ife_output_ports[name] = value
var = tk.BooleanVar()
checkbutton = tk.Checkbutton(root, text=name, variable=var, onvalue=True, offvalue=False, command=lambda val, var=var: handle_checkbutton(var, var.get()))
checkbutton_ife_output_ports.append(checkbutton)
# 布局控件
label1.grid(row=0, column=0, columnspan=9, sticky='w')
checkbutton_autoImageDump.grid(row=1, column=0, sticky='w')
checkbutton_dumpInputatOutput.grid(row=1, column=1, sticky='w')
for i, checkbutton in enumerate(checkbutton_input_ports):
checkbutton.grid(row=i+2, column=0, sticky='w')
for i, checkbutton in enumerate(checkbutton_output_ports):
checkbutton.grid(row=i+2, column=1, sticky='w')
for i, checkbutton in enumerate(checkbutton_ife_input_ports):
checkbutton.grid(row=i+2, column=2, sticky='w')
for i, checkbutton in enumerate(checkbutton_ife_output_ports):
checkbutton.grid(row=i+2, column=3, sticky='w')
# 进入消息循环
root.mainloop()
界面效果如下:

功能说明:
- autoImageDump: 自动图像转储开关,选中则为 1,未选中则为 0。
- dumpInputatOutput: 输入输出端口转储开关,选中则为 1,未选中则为 0。
- 输入端口选择: 选择多个输入端口,在鼠标点击选择后进行 bit 位或运算,结果赋值给变量
autoInputImageDumpMask。 - 输出端口选择: 选择多个输出端口,在鼠标点击选择后进行 bit 位或运算,结果赋值给变量
autoImageDumpMask。 - IFE 输入端口选择: 选择多个 IFE 输入端口,在鼠标点击选择后进行 bit 位或运算,结果赋值给变量
autoImageDumpIFEinputPortMask。 - IFE 输出端口选择: 选择多个 IFE 输出端口,在鼠标点击选择后进行 bit 位或运算,结果赋值给变量
autoImageDumpIFEoutputPortMask。 - Label1 显示: 将
autoImageDumpMask,autoInputImageDumpMask,autoImageDump,autoImageDumpIFEinputPortMask,autoImageDumpIFEoutputPortMask中不为零的变量以等式字符串显示在 Label1 上,以空格分开。
代码解析:
- 使用
tk.BooleanVar()创建布尔变量,用于控制 Checkbutton 的选中状态。 - 使用
lambda表达式创建匿名函数,用于将 Checkbutton 的选中状态和变量绑定到事件处理函数handle_checkbutton。 handle_checkbutton函数更新变量值,并根据变量值更新 Label1 的显示文本。- 使用
grid布局管理器排列控件。
注意:
- 本代码仅供参考,实际应用中可能需要根据具体需求进行调整。
- 可以根据需要添加其他功能,例如保存配置信息、读取配置信息等。
- 可以使用其他布局管理器,例如
pack,place等。 - 可以将代码封装成类,提高代码可复用性。
原文地址: https://www.cveoy.top/t/topic/lFwj 著作权归作者所有。请勿转载和采集!