首页 > 解决方案 > 如何从 Tk 接口运行服务器

问题描述

所以我有以下 Tk 接口,我想从中运行我的客户端和服务器。问题是,例如,当我想运行服务器时,它不会让它们保持打开状态,只会执行一次然后关闭它们,就像普通的 Tcl 脚本一样。你能告诉我一种打开和运行脚本并保持它运行的方法吗?

package require Tk

wm title . "Image Organizor"
grid [ttk::frame .c -padding "3 3 12 12"] -column 0 -row 0 -sticky nwes

grid [ttk::label .c.serverLabel -text "Servers"] -column 1 -row 1 -sticky e
grid [ttk::label .c.idServerLabel -text "Test Clients"] -column 2 -row 1 - sticky e
grid [ttk::button .c.slbl -text "Server" -command server] -column 1 -row 2 -sticky e
grid [ttk::button .c.idlbl -text "Id Server" -command idServer] -column 1 -row 3 -sticky e
grid [ttk::button .c.c1lbl -text "Client 1" -command client1] -column 2 -row 2 -sticky e
grid [ttk::button .c.c2lbl -text "Client 2" -command client2] -column 2 -row 3 -sticky e
grid [ttk::button .c.c3lbl -text "Client 3" -command client3] -column 3 -row 2 -sticky e
grid [ttk::button .c.c4lbl -text "Client 4" -command client4] -column 3 -row 3 -sticky e
grid [ttk::button .c.configlbl -text "Config" -command config] -column 1 -row 4 -sticky e

foreach w [winfo children .c] {grid configure $w -padx 5 -pady 5}

proc server {} {  
source ImageOrganizor/imageOrganizorServer.tcl
}

proc config {} {  
exec notepad.exe ImageOrganizor/config.txt
}

标签: servertcltk

解决方案


  • 您可以使用thread::create在单独的线程中运行脚本
  • 或者只是在一个单独的进程中通过 shell 执行脚本,例如exec ImageOrganizor/imageOrganizorServer.tcl
  • 或者source您的代码在根级别并执行一个过程来启动您的服务器,这可能反过来启动一个线程,执行或分叉一个新进程。

推荐阅读