Python tkinter 界面软件 - 配置图像数据输出选项
以下是使用 Python tkinter 库构建的界面软件代码,用于配置图像数据输出选项,包括自动图像转储、输入/输出端口选择等。
import tkinter as tk
class App(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.autoImageDump = tk.IntVar()
self.dumpInputatOutput = tk.IntVar()
self.autoInputImageDumpMask = tk.IntVar()
self.autoImageDumpMask = tk.IntVar()
self.autoImageDumpIFEinputPortMask = tk.IntVar()
self.autoImageDumpIFEoutputPortMask = tk.IntVar()
self.create_widgets()
def create_widgets(self):
# Label1
self.label1 = tk.Label(self.master, text='')
self.label1.grid(row=0, column=0, columnspan=5)
# Checkbuttons for autoImageDump and dumpInputatOutput
self.autoImageDumpCB = tk.Checkbutton(self.master, text='autoImageDump', variable=self.autoImageDump, onvalue=1, offvalue=0)
self.autoImageDumpCB.grid(row=1, column=0, sticky='w')
self.dumpInputatOutputCB = tk.Checkbutton(self.master, text='dumpInputatOutput', variable=self.dumpInputatOutput, onvalue=1, offvalue=0)
self.dumpInputatOutputCB.grid(row=1, column=1, sticky='w')
# Checkbuttons for autoInputImageDumpMask
tk.Label(self.master, text='autoInputImageDumpMask').grid(row=2, column=0, sticky='w')
self.input_ports_IFE_CB = tk.Checkbutton(self.master, text='input_ports_IFE', variable=self.autoInputImageDumpMask, onvalue=0x1, offvalue=0)
self.input_ports_IFE_CB.grid(row=3, column=0, sticky='w')
self.input_ports_IPE_CB = tk.Checkbutton(self.master, text='input_ports_IPE', variable=self.autoInputImageDumpMask, onvalue=0x2, offvalue=0)
self.input_ports_IPE_CB.grid(row=4, column=0, sticky='w')
self.input_ports_BPS_CB = tk.Checkbutton(self.master, text='input_ports_BPS', variable=self.autoInputImageDumpMask, onvalue=0x4, offvalue=0)
self.input_ports_BPS_CB.grid(row=5, column=0, sticky='w')
self.input_ports_JPEG_CB = tk.Checkbutton(self.master, text='input_ports_JPEG', variable=self.autoInputImageDumpMask, onvalue=0x8, offvalue=0)
self.input_ports_JPEG_CB.grid(row=6, column=0, sticky='w')
self.input_ports_FDHw_CB = tk.Checkbutton(self.master, text='input_ports_FDHw', variable=self.autoInputImageDumpMask, onvalue=0x10, offvalue=0)
self.input_ports_FDHw_CB.grid(row=7, column=0, sticky='w')
self.input_ports_LRME_CB = tk.Checkbutton(self.master, text='input_ports_LRME', variable=self.autoInputImageDumpMask, onvalue=0x20, offvalue=0)
self.input_ports_LRME_CB.grid(row=8, column=0, sticky='w')
self.input_ports_RANSAC_CB = tk.Checkbutton(self.master, text='input_ports_RANSAC', variable=self.autoInputImageDumpMask, onvalue=0x40, offvalue=0)
self.input_ports_RANSAC_CB.grid(row=9, column=0, sticky='w')
self.input_ports_ChiNodes_CB = tk.Checkbutton(self.master, text='input_ports_ChiNodes', variable=self.autoInputImageDumpMask, onvalue=0x80, offvalue=0)
self.input_ports_ChiNodes_CB.grid(row=10, column=0, sticky='w')
self.input_ports_CVP_CB = tk.Checkbutton(self.master, text='input_ports_CVP', variable=self.autoInputImageDumpMask, onvalue=0x100, offvalue=0)
self.input_ports_CVP_CB.grid(row=11, column=0, sticky='w')
self.input_ports_OPE_CB = tk.Checkbutton(self.master, text='input_ports_OPE', variable=self.autoInputImageDumpMask, onvalue=0x400, offvalue=0)
self.input_ports_OPE_CB.grid(row=12, column=0, sticky='w')
self.input_ports_QSAT_CB = tk.Checkbutton(self.master, text='input_ports_QSAT', variable=self.autoInputImageDumpMask, onvalue=0x800, offvalue=0)
self.input_ports_QSAT_CB.grid(row=13, column=0, sticky='w')
self.input_ports_others_nodes_CB = tk.Checkbutton(self.master, text='input_ports_others_nodes', variable=self.autoInputImageDumpMask, onvalue=0x40000000, offvalue=0)
self.input_ports_others_nodes_CB.grid(row=14, column=0, sticky='w')
# Checkbuttons for autoImageDumpMask
tk.Label(self.master, text='autoImageDumpMask').grid(row=2, column=1, sticky='w')
self.output_ports_IFE_CB = tk.Checkbutton(self.master, text='output_ports_IFE', variable=self.autoImageDumpMask, onvalue=0x1, offvalue=0)
self.output_ports_IFE_CB.grid(row=3, column=1, sticky='w')
self.output_ports_IPE_CB = tk.Checkbutton(self.master, text='output_ports_IPE', variable=self.autoImageDumpMask, onvalue=0x2, offvalue=0)
self.output_ports_IPE_CB.grid(row=4, column=1, sticky='w')
self.output_ports_BPS_CB = tk.Checkbutton(self.master, text='output_ports_BPS', variable=self.autoImageDumpMask, onvalue=0x4, offvalue=0)
self.output_ports_BPS_CB.grid(row=5, column=1, sticky='w')
self.output_ports_JPEG_CB = tk.Checkbutton(self.master, text='output_ports_JPEG', variable=self.autoImageDumpMask, onvalue=0x8, offvalue=0)
self.output_ports_JPEG_CB.grid(row=6, column=1, sticky='w')
self.output_ports_FDHw_CB = tk.Checkbutton(self.master, text='output_ports_FDHw', variable=self.autoImageDumpMask, onvalue=0x10, offvalue=0)
self.output_ports_FDHw_CB.grid(row=7, column=1, sticky='w')
self.output_ports_LRME_CB = tk.Checkbutton(self.master, text='output_ports_LRME', variable=self.autoImageDumpMask, onvalue=0x20, offvalue=0)
self.output_ports_LRME_CB.grid(row=8, column=1, sticky='w')
self.output_ports_RANSAC_CB = tk.Checkbutton(self.master, text='output_ports_RANSAC', variable=self.autoImageDumpMask, onvalue=0x40, offvalue=0)
self.output_ports_RANSAC_CB.grid(row=9, column=1, sticky='w')
self.output_ports_ChiNodes_CB = tk.Checkbutton(self.master, text='output_ports_ChiNodes', variable=self.autoImageDumpMask, onvalue=0x80, offvalue=0)
self.output_ports_ChiNodes_CB.grid(row=10, column=1, sticky='w')
self.output_ports_CVP_CB = tk.Checkbutton(self.master, text='output_ports_CVP', variable=self.autoImageDumpMask, onvalue=0x100, offvalue=0)
self.output_ports_CVP_CB.grid(row=11, column=1, sticky='w')
self.output_ports_TFE_CB = tk.Checkbutton(self.master, text='output_ports_TFE', variable=self.autoImageDumpMask, onvalue=0x200, offvalue=0)
self.output_ports_TFE_CB.grid(row=12, column=1, sticky='w')
self.output_ports_OPE_CB = tk.Checkbutton(self.master, text='output_ports_OPE', variable=self.autoImageDumpMask, onvalue=0x400, offvalue=0)
self.output_ports_OPE_CB.grid(row=13, column=1, sticky='w')
self.output_ports_QSAT_CB = tk.Checkbutton(self.master, text='output_ports_QSAT', variable=self.autoImageDumpMask, onvalue=0x800, offvalue=0)
self.output_ports_QSAT_CB.grid(row=14, column=1, sticky='w')
self.output_ports_others_nodes_CB = tk.Checkbutton(self.master, text='output_ports_others_nodes', variable=self.autoImageDumpMask, onvalue=0x40000000, offvalue=0)
self.output_ports_others_nodes_CB.grid(row=15, column=1, sticky='w')
# Checkbuttons for autoImageDumpIFEinputPortMask
tk.Label(self.master, text='autoImageDumpIFEinputPortMask').grid(row=2, column=2, sticky='w')
self.IFEInputPortCSIDTPG_CB = tk.Checkbutton(self.master, text='IFEInputPortCSIDTPG', variable=self.autoImageDumpIFEinputPortMask, onvalue=0x1, offvalue=0)
self.IFEInputPortCSIDTPG_CB.grid(row=3, column=2, sticky='w')
self.IFEInputPortCAMIFTPG_CB = tk.Checkbutton(self.master, text='IFEInputPortCAMIFTPG', variable=self.autoImageDumpIFEinputPortMask, onvalue=0x2, offvalue=0)
self.IFEInputPortCAMIFTPG_CB.grid(row=4, column=2, sticky='w')
self.IFEInputPortSensor_CB = tk.Checkbutton(self.master, text='IFEInputPortSensor', variable=self.autoImageDumpIFEinputPortMask, onvalue=0x4, offvalue=0)
self.IFEInputPortSensor_CB.grid(row=5, column=2, sticky='w')
self.IFEInputPortRDI0_CB = tk.Checkbutton(self.master, text='IFEInputPortRDI0', variable=self.autoImageDumpIFEinputPortMask, onvalue=0x8, offvalue=0)
self.IFEInputPortRDI0_CB.grid(row=6, column=2, sticky='w')
self.IFEInputPortRDI1_CB = tk.Checkbutton(self.master, text='IFEInputPortRDI1', variable=self.autoImageDumpIFEinputPortMask, onvalue=0x10, offvalue=0)
self.IFEInputPortRDI1_CB.grid(row=7, column=2, sticky='w')
self.IFEInputPortRDI2_CB = tk.Checkbutton(self.master, text='IFEInputPortRDI2', variable=self.autoImageDumpIFEinputPortMask, onvalue=0x20, offvalue=0)
self.IFEInputPortRDI2_CB.grid(row=8, column=2, sticky='w')
self.IFEInpurPortDualPD_CB = tk.Checkbutton(self.master, text='IFEInpurPortDualPD', variable=self.autoImageDumpIFEinputPortMask, onvalue=0x40, offvalue=0)
self.IFEInpurPortDualPD_CB.grid(row=9, column=2, sticky='w')
self.ALLports_CB = tk.Checkbutton(self.master, text='ALLports', variable=self.autoImageDumpIFEinputPortMask, onvalue=0x7F, offvalue=0)
self.ALLports_CB.grid(row=10, column=2, sticky='w')
# Checkbuttons for autoImageDumpIFEoutputPortMask
tk.Label(self.master, text='autoImageDumpIFEoutputPortMask').grid(row=2, column=3, sticky='w')
self.IFEOutputPortFull_CB = tk.Checkbutton(self.master, text='IFEOutputPortFull', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x1, offvalue=0)
self.IFEOutputPortFull_CB.grid(row=3, column=3, sticky='w')
self.IFEOutputPortDS4_CB = tk.Checkbutton(self.master, text='IFEOutputPortDS4', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x2, offvalue=0)
self.IFEOutputPortDS4_CB.grid(row=4, column=3, sticky='w')
self.IFEOutputPortDS16_CB = tk.Checkbutton(self.master, text='IFEOutputPortDS16', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x4, offvalue=0)
self.IFEOutputPortDS16_CB.grid(row=5, column=3, sticky='w')
self.IFEOutputPortCAMIFRaw_CB = tk.Checkbutton(self.master, text='IFEOutputPortCAMIFRaw', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x8, offvalue=0)
self.IFEOutputPortCAMIFRaw_CB.grid(row=6, column=3, sticky='w')
self.IFEOutputPortLSCRaw_CB = tk.Checkbutton(self.master, text='IFEOutputPortLSCRaw', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x10, offvalue=0)
self.IFEOutputPortLSCRaw_CB.grid(row=7, column=3, sticky='w')
self.IFEOutputPortGTMRaw_CB = tk.Checkbutton(self.master, text='IFEOutputPortGTMRaw', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x20, offvalue=0)
self.IFEOutputPortGTMRaw_CB.grid(row=8, column=3, sticky='w')
self.IFEOutputPortFD_CB = tk.Checkbutton(self.master, text='IFEOutputPortFD', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x40, offvalue=0)
self.IFEOutputPortFD_CB.grid(row=9, column=3, sticky='w')
self.IFEOutputPortPDAF_CB = tk.Checkbutton(self.master, text='IFEOutputPortPDAF', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x80, offvalue=0)
self.IFEOutputPortPDAF_CB.grid(row=10, column=3, sticky='w')
self.IFEOutputPortRDI0_CB = tk.Checkbutton(self.master, text='IFEOutputPortRDI0', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x100, offvalue=0)
self.IFEOutputPortRDI0_CB.grid(row=11, column=3, sticky='w')
self.IFEOutputPortRDI1_CB = tk.Checkbutton(self.master, text='IFEOutputPortRDI1', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x200, offvalue=0)
self.IFEOutputPortRDI1_CB.grid(row=12, column=3, sticky='w')
self.IFEOutputPortRDI2_CB = tk.Checkbutton(self.master, text='IFEOutputPortRDI2', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x400, offvalue=0)
self.IFEOutputPortRDI2_CB.grid(row=13, column=3, sticky='w')
self.IFEOutputPortRDI3_CB = tk.Checkbutton(self.master, text='IFEOutputPortRDI3', variable=self.autoImageDumpIFEoutputPortMask, onvalue=0x800, offvalue=0)
self.IFEOutputPortRDI3_CB.grid(row=14, column=3, sticky='w')
# Update Label1
self.update_label()
# Bind checkbutton commands to update Label1
self.autoImageDumpCB.command(self.update_label)
self.dumpInputatOutputCB.command(self.update_label)
self.input_ports_IFE_CB.command(self.update_label)
self.input_ports_IPE_CB.command(self.update_label)
self.input_ports_BPS_CB.command(self.update_label)
self.input_ports_JPEG_CB.command(self.update_label)
self.input_ports_FDHw_CB.command(self.update_label)
self.input_ports_LRME_CB.command(self.update_label)
self.input_ports_RANSAC_CB.command(self.update_label)
self.input_ports_ChiNodes_CB.command(self.update_label)
self.input_ports_CVP_CB.command(self.update_label)
self.input_ports_OPE_CB.command(self.update_label)
self.input_ports_QSAT_CB.command(self.update_label)
self.input_ports_others_nodes_CB.command(self.update_label)
self.output_ports_IFE_CB.command(self.update_label)
self.output_ports_IPE_CB.command(self.update_label)
self.output_ports_BPS_CB.command(self.update_label)
self.output_ports_JPEG_CB.command(self.update_label)
self.output_ports_FDHw_CB.command(self.update_label)
self.output_ports_LRME_CB.command(self.update_label)
self.output_ports_RANSAC_CB.command(self.update_label)
self.output_ports_ChiNodes_CB.command(self.update_label)
self.output_ports_CVP_CB.command(self.update_label)
self.output_ports_TFE_CB.command(self.update_label)
self.output_ports_OPE_CB.command(self.update_label)
self.output_ports_QSAT_CB.command(self.update_label)
self.output_ports_others_nodes_CB.command(self.update_label)
self.IFEInputPortCSIDTPG_CB.command(self.update_label)
self.IFEInputPortCAMIFTPG_CB.command(self.update_label)
self.IFEInputPortSensor_CB.command(self.update_label)
self.IFEInputPortRDI0_CB.command(self.update_label)
self.IFEInputPortRDI1_CB.command(self.update_label)
self.IFEInputPortRDI2_CB.command(self.update_label)
self.IFEInpurPortDualPD_CB.command(self.update_label)
self.ALLports_CB.command(self.update_label)
self.IFEOutputPortFull_CB.command(self.update_label)
self.IFEOutputPortDS4_CB.command(self.update_label)
self.IFEOutputPortDS16_CB.command(self.update_label)
self.IFEOutputPortCAMIFRaw_CB.command(self.update_label)
self.IFEOutputPortLSCRaw_CB.command(self.update_label)
self.IFEOutputPortGTMRaw_CB.command(self.update_label)
self.IFEOutputPortFD_CB.command(self.update_label)
self.IFEOutputPortPDAF_CB.command(self.update_label)
self.IFEOutputPortRDI0_CB.command(self.update_label)
self.IFEOutputPortRDI1_CB.command(self.update_label)
self.IFEOutputPortRDI2_CB.command(self.update_label)
self.IFEOutputPortRDI3_CB.command(self.update_label)
def update_label(self):
text = []
if self.autoImageDump.get() != 0:
text.append(f'autoImageDump={self.autoImageDump.get()}')
if self.dumpInputatOutput.get() != 0:
text.append(f'dumpInputatOutput={self.dumpInputatOutput.get()}')
if self.autoInputImageDumpMask.get() != 0:
text.append(f'autoInputImageDumpMask={self.autoInputImageDumpMask.get()}')
if self.autoImageDumpMask.get() != 0:
text.append(f'autoImageDumpMask={self.autoImageDumpMask.get()}')
if self.autoImageDumpIFEinputPortMask.get() != 0:
text.append(f'autoImageDumpIFEinputPortMask={self.autoImageDumpIFEinputPortMask.get()}')
if self.autoImageDumpIFEoutputPortMask.get() != 0:
text.append(f'autoImageDumpIFEoutputPortMask={self.autoImageDumpIFEoutputPortMask.get()}')
self.label1.config(text=' '.join(text))
# Create the main window
root = tk.Tk()
root.title('图像数据输出配置')
# Create the application
app = App(master=root)
# Pack the application
app.pack()
# Start the event loop
root.mainloop()
该代码创建了一个简单的 GUI,包含以下部分:
- 一个文本显示框 Label1,用于显示配置选项的值。
- 两个 Checkbutton 用于控制
autoImageDump和dumpInputatOutput选项,选中则对应变量值设置为 1,否则设置为 0。 - 多个 Checkbutton 用于选择不同的端口,选中则对应变量值进行位或运算。
- Label1 会实时更新,显示当前配置选项的值。
该 GUI 可以帮助用户方便地配置图像数据输出选项。
说明:
- 代码中使用了
tk.IntVar()类型变量来存储 Checkbutton 的状态。 onvalue和offvalue属性用于设置选中和未选中时的值。command属性用于绑定更新 Label1 的函数。grid()方法用于布局控件。config()方法用于更改控件属性。
该代码可以作为构建更复杂图像数据输出配置界面的基础。可以通过添加更多功能,例如下拉菜单、输入框、按钮等,以满足不同的需求。
原文地址: https://www.cveoy.top/t/topic/lFvH 著作权归作者所有。请勿转载和采集!