server - 如何从 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
}
解决方案
- 您可以使用thread::create在单独的线程中运行脚本
- 或者只是在一个单独的进程中通过 shell 执行脚本,例如
exec ImageOrganizor/imageOrganizorServer.tcl
- 或者
source
您的代码在根级别并执行一个过程来启动您的服务器,这可能反过来启动一个线程,执行或分叉一个新进程。
推荐阅读
- css - 仅将 CSS 应用于一个网格
- python - 为什么 linecache 会检查缓存中元组元素的长度?
- html - Bootstrap:在小显示中一个又一个被推的列
- micronaut - 错误:意外错误:非法名称.$HelloControllerDefinition
- c - 尽管没有内容,for循环是否有可能使代码崩溃
- java - JNA Native.loadLibrary 生成内存故障:__memmove_avx_unaligned_erms
- hyperledger-fabric - 升级 Hyperledger Fabric 业务网络
- r - R:删除data.frames列表中的行
- javascript - AJAX 不发送变量写入 txt
- ios - 如何为 Cordova 插件使用本地 CocoaPods 依赖项?