所以我想在我的程序中输入TCL代码。我希望它能够达到我的一些C ++函数和类。所以我使用C++/TCL。所有通用的TCL到C ++绑定对我来说都很好。但现在我想在顶部有一些小的UI(所以我有很多关于与我的应用程序交互的一般TCL代码,现在我想添加Tk gui到它。)如何在窗口内创建一个简单的tk按钮,并带有一些名称我想用C ++ / TCL?我根本不想使用C ++ / TK。
的更新 的 我尝试了什么:
将所有Tk(.tcl)文件放入../../tk文件夹并尝试此操作...它失败
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
"set auto_path [linsert $auto_path 0 [file join [file dirname [info script]] ../../tk]]\n"
"package require Tk 8.5\n";
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
return 0;
}
我也试过像
这样的东西#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
"foreach tkFile [glob -nocomplain -directory ../../tk *] {\n"
" source $tkFile\n"
"}\n"
"package require Tk 8.5\n";
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
return 0;
}
哪个也失败了。
此外,我试图将tk85.dll放在我的应用附近并致电
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
"load tk85.dll \n";
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
return 0;
}
和这个
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
"interp create slave \n"
"load {} Tk slave \n"
;
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
return 0;
}
如here所述。这也失败了。
此
#include <string>
#include "cpptcl.h"
int main(int argc, char *argv[])
{
std::string script =
"package require Tcl 8.5\n"
" interp create a\n"
" a eval {set argv {-display :0}; package require Tk; button \".b\" -text \"Say Hello\"; pack \".b\" -padx 20 -pady 6;}\n"
;
Tcl::interpreter tcl_interpreter;
tcl_interpreter.eval(script);
std::cin.get();
return 0;
}
编译并运行,但不会显示ani窗口或其他内容。(
怎么办?如何加载Tk?
答案 0 :(得分:1)
你还没有说失败的原因,但这不会起作用。要拥有GUI,您需要一个事件循环。
我建议采用不同的方法:将C ++代码转换为可加载Tcl的模块,然后您的脚本可以在wish
下运行,并使用Tk和用C ++实现的对象。