Posted to tcl by starseeker at Sat Apr 25 14:05:49 GMT 2020view pretty

#include "stdlib.h"
  
#include "tcl.h"
#include "tk.h"

#define wsize 500

int
main()
{
    Tcl_Interp *interp = Tcl_CreateInterp();
    Tk_Init(interp);
    Tk_Window tkwin = Tk_MainWindow(interp);
    Tk_GeometryRequest(tkwin, wsize, wsize);
    Tk_MakeWindowExist(tkwin);
    Tk_MapWindow(tkwin);
    Tcl_Eval(interp, "bind . <Button-1> \"puts A\"");
    Tcl_Eval(interp, "event generate . <Button-1>");

    while (1) {
        int handled = 0;
        while (Tcl_DoOneEvent(TCL_ALL_EVENTS|TCL_DONT_WAIT)) {
            handled++;
        }
        if (!Tk_GetNumMainWindows()) {
            exit(0);
        }
    }

}

Error:

A
invalid command name "::tk::ScreenChanged"
    while executing
"::tk::ScreenChanged :1.0"
    (changing screen in event binding)

Comments

Posted by starseeker at Sat Apr 25 14:27:24 GMT 2020 [text] [code]

Problem turned out to be Tcl_Init not getting called - added before Tk_Init and it cleared the error.