2013-08-08 4 views
2

В Tcl/Tk 8.6 есть функция Ttk, известная как ноутбук, которую я хотел бы реализовать в своей программе. Однако мне нужен пакет, чтобы использовать эту функцию. Я должен использовать 8.4, поскольку одна из DLL, которые мы используем, ТОЛЬКО совместима с версией 8.4 (источник моего разочарования).tcl 8.6 пакет в 8.4

Я загрузил источник для Tcl 8.6 и нашел Notebook.tcl. Я скопировал структуру папок из папки BWidgets, надеясь, что я могу получить ее для импорта в программу безрезультатно. Любые мысли о том, как я могу получить пакет из Tcl 8.6 для правильной работы с 8.4?

ответ

4

Набор виджета Ttk впервые появился в Tk 8.5; с тех пор появился виджет для ноутбука. Тем не менее, были основаны виджеты TTK (! очень близко основа) на пакете расширения виджета называется Tile, о котором автор said:

Плитка будет поддерживаться как 8,4-совместимое расширение до тех пор, пока Tcl/Tk 8.4 остается жизнеспособной платформой. Это займет некоторое время, прежде чем каждый сможет обновить до 8.5.

Я не 100% уверен, что если вы можете использовать плитки для того, что вы делаете, но это получил быть стоит попробовать!


Если это не сработает, вы можете подумать о том, чтобы разделить вашу программу на два процесса, которые общаются по трубе. Это работает очень хорошо; Обработка Tcl труб очень хороша. Это позволило бы использовать 8.5 или 8.6 для графического интерфейса пользователя и 8.4 для старого расширения.

Если этот код 8.4 используется для создания виджета, а вы используете Unix/X11, вы можете даже embed виджет 8.4 в кадре с графическим интерфейсом 8.5/8.6. Ключ в том, что рамка, которую вы установили -container true, и то, что вы установили -use $id, могут быть в разных процессах; просто создайте рамку контейнера, получите его идентификатор с winfo id и отправьте это другому процессу при его создании, чтобы он мог создать топлел, который использует этот фрейм в качестве своего контейнера. (С помощью параметра командной строки работает особенно хорошо, как позволяет контролировать параметры к . верхнего уровня.)

set f [frame .foo -container true] 
set id [winfo id $f] 
set pipeline [open |[list wish8.4 your84script.tcl -use $id] "r+"] 

(Это как плагин для браузера Tcl/Tk работал.)

+0

Такой большой ответ. Заслуживает нескольких голосов! – TrojanName

Смежные вопросы