Re: SOF: Tcl/Tk
On 2002.12.26 at 15:43:03 +0300, Denis Dzyubenko wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Приветствую,
>
> Сегодня написал свою первую программу на tcl и Tk, и появилось куча
> вопросов, а где их можно задавать я не знаю.
mailto:tcl-request@ice.ru?Subject=subscribe
> Можно я тут поспрашиваю ? спасибо ;)
> Как идеологически правильнее обращаться в widget'ам - в каждой процедуре
> обращаться к виджету по его имени, или объявить глобальную переменную в
> которую поместить название виджета и обращаться к глобальной переменно,
> или в качестве параметра процедуре передавать путь к виждету ?
Идеологически правильнее последний вариант. Глобальных переменных
следует избегать. А хард-кодед имена неудобны тем, что когда тебе
потребуется обвесить теми же процедурами другой виджет, их придется
переписывать.
> Как обработать закрытие окна - т.е. я нажимаю на кнопку закрытия окна (в
> titlebar'е) и хочу чтобы появилось окно Save?Ok:Cancel
wm protocol . WM_DELETE_WINDOW обработчик
> Как писать портируемые программы - в Linux'е я в качестве начального
> пути к файлам использую $env(HOME), но в windows нет такой переменной
> окружения?
if {$tcl_platform(platform) == "unix" } {
set initial_path $env(HOME)
} elseif {$tcl_platform(platform) == "windows" } {
set initial_path $env(USERPROFILE)
} else {
tk_messageBox -type ok -title error -message "Don't know where to\
search for files on your platform $tcl_platform(platform)"
exit
}
> Хочу изменить шрифт у одного Text виджета, и чтобы этот шрифт хранился
> в каком-нибудь конфигурационном файле - можно использовать
> option readfile, но в windows нет такого понятия как XRDB. Откуда
> брать нужные мне настройки?
По-моему option все равно есть и работает. Эмулируя XRDB там, где ее
нету.
Но вообще-то никто не мешает задать шрифт при создании виджета явно,
или даже позже сказать
$widget configure -font что-надо
> Как изменить класс моего окна? Обычно класс = имя приложения, но можно
> ли сделать по другому?
> toplevel -class ClassName создает новое окно с указанным класом. А как
> изменить класс у главного (т.е. самого первого) окна приложения?
Хорошего способа не знаю. В принципе wish -class дает требуемый
результат, но мне не удавалось засунуть это в строчку с #!
> Для чего существует команда option get и как ее использовать?
Для того, чтобы получить значение опции из option database. Там
можно хранить не только те опции виджетов, которые виджеты подбирают
автоматически, но и любые другие конфигурационные данные.
Например, если ты пользуешься тэгами в текстовом виджете, то цвета
шрифта помеченного тэгом автоматически из optiondb не подберутся.
А с помощью $widget tag configure -fg [option get $widget mytagfont TagFont]
ты ее оттуда добудешь.
--
Victor Wagner vitus@ice.ru
Chief Technical Officer Office:7-(095)-748-53-88
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net http://www.ice.ru/~vitus
Reply to:
- References:
- SOF: Tcl/Tk
- From: Denis Dzyubenko <shad@mail.kubtelecom.ru>