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.
wwcs-1314/src/ui/connect.py

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()