以下是一个简单的 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()

界面效果如下:

tkinter界面截图

功能说明:

  • autoImageDump: 自动图像转储开关,选中则为 1,未选中则为 0。
  • dumpInputatOutput: 输入输出端口转储开关,选中则为 1,未选中则为 0。
  • 输入端口选择: 选择多个输入端口,在鼠标点击选择后进行 bit 位或运算,结果赋值给变量 autoInputImageDumpMask
  • 输出端口选择: 选择多个输出端口,在鼠标点击选择后进行 bit 位或运算,结果赋值给变量 autoImageDumpMask
  • IFE 输入端口选择: 选择多个 IFE 输入端口,在鼠标点击选择后进行 bit 位或运算,结果赋值给变量 autoImageDumpIFEinputPortMask
  • IFE 输出端口选择: 选择多个 IFE 输出端口,在鼠标点击选择后进行 bit 位或运算,结果赋值给变量 autoImageDumpIFEoutputPortMask
  • Label1 显示:autoImageDumpMaskautoInputImageDumpMaskautoImageDumpautoImageDumpIFEinputPortMaskautoImageDumpIFEoutputPortMask 中不为零的变量以等式字符串显示在 Label1 上,以空格分开。

代码解析:

  • 使用 tk.BooleanVar() 创建布尔变量,用于控制 Checkbutton 的选中状态。
  • 使用 lambda 表达式创建匿名函数,用于将 Checkbutton 的选中状态和变量绑定到事件处理函数 handle_checkbutton
  • handle_checkbutton 函数更新变量值,并根据变量值更新 Label1 的显示文本。
  • 使用 grid 布局管理器排列控件。

注意:

  • 本代码仅供参考,实际应用中可能需要根据具体需求进行调整。
  • 可以根据需要添加其他功能,例如保存配置信息、读取配置信息等。
  • 可以使用其他布局管理器,例如 packplace 等。
  • 可以将代码封装成类,提高代码可复用性。
Python tkinter 界面软件:配置图像数据端口

原文地址: https://www.cveoy.top/t/topic/lFwj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录