[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: