Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с графич. библиотекой TK, проблемы с графич. библиотекой TK 
:(
    Опции темы
kpp2
Дата 20.12.2007, 04:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Как сделать так, чтобы отображение при нажатии на кнопку button происходило сразу, а не по окончании всех вычислений.
Как можно видеть из кода при нажатии на кнопку происходит следующее:
начинается цикл из 5 итераций, в каждой итерации задержка на 1 секунду. В теле цикла так же имеется строка label2.text("#{var.value().to_i-i}")  но её отображение не происходит каждую секунду, оно происходит тольок по-окончании последней итерации цикла. Знает ли кто-нибудь в чём прикол ТК? Что это за урезанность в функциональности... 

Код



require 'tk'
#Signal.trap("EXIT"){ print "\a\a\a aaa" }

def shutdown()
    #system("shutdown -s -t 30")
end    


root = TkRoot.new('background' => 'green') {
    title "limiter 2007" 
    cursor 'X_cursor'
    resizable(0, 0)
    #"Destroy",proc {shutdown()}
}
root.geometry '200x110'
menuline1 = TkFrame.new(root, 'relief'=>'raised', 'borderwidth'=>1).pack('side'=>'top', 'fill'=>'x')
menuline2 = TkFrame.new(root, 'relief'=>'raised', 'borderwidth'=>0,'background' => 'black').pack( 'side'=>'left','fill'=>'y')

##events
#root.bind("Destroy"){shutdown()}
#root.bind("Destroy",proc {shutdown()})



#label 1
label1 = TkLabel.new(menuline1) { 
    text "L  I  M  I  T  E  R"  
    padx 1 ; pady 0;
}.pack("side"=>"top")
label1.font(TkFont.new(:size => 15)) 

#enter
entry = TkEntry.new(menuline2){
    width 6
}.pack()
var = TkVariable.new("0")
entry.textvariable(var)
entry.font(TkFont.new(:size => 15)) 
entry.focus

#label 2
label2 = TkLabel.new(root,'background' => 'green') { text "0" }
label2.font(TkFont.new(:size => 40)) 

#button
button = TkButton.new(menuline2) {
  text "start"
  width 5
  height 1
  command proc {
   label2.text "#{var.value()}" 
   for i in 0..5
    sleep 1
    label2.text("#{var.value().to_i-i}")
    $stdout.flush
    label2.pack()
   end
  }
}.pack("side"=>"right")
button.font(TkFont.new(:size => 15)) 


label2.pack()



Tk.mainloop()
=begin
limit = 75 

    while limit > 0
    print "\r Time: #{limit} minute"
    $stdout.flush
    sleep 60
    limit-=1
    end
    print "\a\a\a\a\a"
    shutdown()
=end

PM MAIL   Вверх
allexdav
Дата 1.1.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


лоботомированное тело тиклского питоноида



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 19.3.2006
Где: Россия, Нижний Но вгород

Репутация: нет
Всего: 3



все нормально, работает как должно.
обновление графики в Тк происходит, когда закончен обработчик команды. Чтобы принудительно вызвать обновление - есть команда update ( в классической связке Tcl/Tk )
соответсвенно тебе нужно позвать ее после пака.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0686 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.