You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
5.3 KiB
120 lines
5.3 KiB
import tkinter as tk
|
|
from tkinter import ttk
|
|
|
|
def save_settings():
|
|
# Placeholder for saving settings logic
|
|
print("Settings saved.")
|
|
|
|
# Create main window
|
|
root = tk.Tk()
|
|
root.title("设备连接与配置")
|
|
|
|
# Frame for serial settings
|
|
serial_frame = ttk.LabelFrame(root, text="串口和波特率")
|
|
serial_frame.grid(row=0, column=0, padx=10, pady=5, sticky=tk.W)
|
|
|
|
serial_port_label = ttk.Label(serial_frame, text="串口:")
|
|
serial_port_label.grid(row=0, column=0, padx=5, pady=2, sticky=tk.W)
|
|
serial_port_combo = ttk.Combobox(serial_frame, width=8, values=["COM1", "COM2", "COM3"])
|
|
serial_port_combo.grid(row=0, column=1, padx=5, pady=2)
|
|
serial_port_combo.set("COM1") # Set default value
|
|
|
|
baudrate_label = ttk.Label(serial_frame, text="波特率:")
|
|
baudrate_label.grid(row=1, column=0, padx=5, pady=2, sticky=tk.W)
|
|
baudrate_combo = ttk.Combobox(serial_frame, width=8, values=["9600", "19200", "115200"])
|
|
baudrate_combo.grid(row=1, column=1, padx=5, pady=2)
|
|
baudrate_combo.set("115200") # Set default value
|
|
|
|
# Frame for TCP settings
|
|
tcp_frame = ttk.LabelFrame(root, text="TCP配置")
|
|
tcp_frame.grid(row=1, column=0, padx=10, pady=5, sticky=tk.W)
|
|
|
|
tcp_ip_label = ttk.Label(tcp_frame, text="TCP 远端 IP:")
|
|
tcp_ip_label.grid(row=0, column=0, padx=5, pady=2, sticky=tk.W)
|
|
tcp_ip_combo = ttk.Combobox(tcp_frame, width=15, values=["192.168.1.100", "192.168.1.101", "192.168.1.102"])
|
|
tcp_ip_combo.grid(row=0, column=1, padx=5, pady=2)
|
|
tcp_ip_combo.set("192.168.1.100") # Set default value
|
|
|
|
tcp_port_label = ttk.Label(tcp_frame, text="端口:")
|
|
tcp_port_label.grid(row=1, column=0, padx=5, pady=2, sticky=tk.W)
|
|
tcp_port_entry = ttk.Entry(tcp_frame, width=8)
|
|
tcp_port_entry.grid(row=1, column=1, padx=5, pady=2)
|
|
tcp_port_entry.insert(0, "2000")
|
|
|
|
# Frame for UDP settings
|
|
udp_frame = ttk.LabelFrame(root, text="UDP配置")
|
|
udp_frame.grid(row=2, column=0, padx=10, pady=5, sticky=tk.W)
|
|
|
|
udp_remote_ip_label = ttk.Label(udp_frame, text="UDP 远端 IP:")
|
|
udp_remote_ip_label.grid(row=0, column=0, padx=5, pady=2, sticky=tk.W)
|
|
udp_remote_ip_combo = ttk.Combobox(udp_frame, width=15, values=["192.168.2.100", "192.168.2.101", "192.168.2.102"])
|
|
udp_remote_ip_combo.grid(row=0, column=1, padx=5, pady=2)
|
|
udp_remote_ip_combo.set("192.168.2.100") # Set default value
|
|
|
|
udp_remote_port_label = ttk.Label(udp_frame, text="远端端口:")
|
|
udp_remote_port_label.grid(row=1, column=0, padx=5, pady=2, sticky=tk.W)
|
|
udp_remote_port_entry = ttk.Entry(udp_frame, width=8)
|
|
udp_remote_port_entry.grid(row=1, column=1, padx=5, pady=2)
|
|
udp_remote_port_entry.insert(0, "14551")
|
|
|
|
udp_local_ip_label = ttk.Label(udp_frame, text="UDP 本地 IP:")
|
|
udp_local_ip_label.grid(row=2, column=0, padx=5, pady=2, sticky=tk.W)
|
|
udp_local_ip_combo = ttk.Combobox(udp_frame, width=15, values=["192.168.2.101", "192.168.2.102", "192.168.2.103"])
|
|
udp_local_ip_combo.grid(row=2, column=1, padx=5, pady=2)
|
|
udp_local_ip_combo.set("192.168.2.101") # Set default value
|
|
|
|
udp_local_port_label = ttk.Label(udp_frame, text="本地端口:")
|
|
udp_local_port_label.grid(row=3, column=0, padx=5, pady=2, sticky=tk.W)
|
|
udp_local_port_entry = ttk.Entry(udp_frame, width=8)
|
|
udp_local_port_entry.grid(row=3, column=1, padx=5, pady=2)
|
|
udp_local_port_entry.insert(0, "14550")
|
|
|
|
# Frame for video settings
|
|
video_frame = ttk.LabelFrame(root, text="视频功能")
|
|
video_frame.grid(row=3, column=0, padx=10, pady=5, sticky=tk.W)
|
|
|
|
# Network video options
|
|
network_video_var = tk.IntVar()
|
|
network_video_label = ttk.Label(video_frame, text="网络视频地址:")
|
|
network_video_label.grid(row=0, column=1, padx=5, pady=2, sticky=tk.W)
|
|
network_video_radio1 = ttk.Radiobutton(video_frame, variable=network_video_var, value=1)#text="选项1",
|
|
network_video_radio1.grid(row=0, column=0, padx=5, pady=2, sticky=tk.W )
|
|
|
|
|
|
network_video_entry = ttk.Entry(video_frame, width=20)
|
|
network_video_entry.grid(row=0, column=4, padx=5, pady=2)
|
|
|
|
network_video_combo = ttk.Combobox(tcp_frame, width=15, values=["192.168.1.100", "192.168.1.101", "192.168.1.102"])
|
|
network_video_combo.grid(row=0, column=5, padx=5, pady=2)
|
|
network_video_combo.set("192.168.2.101") # Set default value
|
|
|
|
# 禁用网络视频输入框,除非选择了网络视频选项
|
|
def update_entry_state():
|
|
network_video_entry.config(state='normal' if network_video_var.get() == 1 else 'disabled')
|
|
|
|
|
|
# network_video_var.trace_add('write', update_entry_state)
|
|
# update_entry_state() # 初始化时调用一次以设置正确的状态
|
|
|
|
# USB device options
|
|
#usb_device_var = tk.IntVar()
|
|
usb_device_label = ttk.Label(video_frame, text="USB 设备:")
|
|
usb_device_label.grid(row=1, column=1, padx=5, pady=2, sticky=tk.W)
|
|
usb_device_radio1 = ttk.Radiobutton(video_frame, variable=network_video_var, value=2)#text="Camera1",
|
|
usb_device_radio1.grid(row=1, column=0, padx=5, pady=2, sticky=tk.W)
|
|
|
|
|
|
usb_device_entry = ttk.Entry(video_frame, width=20)
|
|
usb_device_entry.grid(row=1, column=4, padx=5, pady=2)
|
|
|
|
usb_device_combo = ttk.Combobox(tcp_frame, width=15, values=["192.168.1.100", "192.168.1.101", "192.168.1.102"])
|
|
usb_device_combo.grid(row=1, column=5, padx=5, pady=2)
|
|
usb_device_combo.set("192.168.2.101") # Set default value
|
|
|
|
# Save settings button
|
|
save_button = ttk.Button(root, text="保存设置", command=save_settings)
|
|
save_button.grid(row=4, column=0, pady=10)
|
|
save_button = ttk.Button(root, text="连接设备", command=save_settings)
|
|
save_button.grid(row=5, column=0, pady=10)
|
|
|
|
root.mainloop() |