Поиск:

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


Новичок



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

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



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

Код


Код:
view plaincopy to clipboardprint?

   1. require 'tk'  
   2. #Signal.trap("EXIT"){ print "\a\a\a aaa" }  
   3.   
   4. def shutdown()  
   5.     #system("shutdown -s -t 30")  
   6. end   
   7.   
   8.   
   9. root = TkRoot.new('background' => 'green') { 
  10.     title "limiter 2007"  
  11.     cursor 'X_cursor' 
  12.     resizable(0, 0) 
  13.     #"Destroy",proc {shutdown()}  
  14. }  
  15. root.geometry '200x110'  
  16. menuline1 = TkFrame.new(root, 'relief'=>'raised', 'borderwidth'=>1).pack('side'=>'top', 'fill'=>'x')  
  17. menuline2 = TkFrame.new(root, 'relief'=>'raised', 'borderwidth'=>0,'background' => 'black').pack( 'side'=>'left','fill'=>'y')  
  18.   
  19. ##events  
  20. #root.bind("Destroy"){shutdown()}  
  21. #root.bind("Destroy",proc {shutdown()})  
  22.   
  23.   
  24.   
  25. #label 1  
  26. label1 = TkLabel.new(menuline1) {  
  27.     text "L  I  M  I  T  E  R"   
  28.     padx 1 ; pady 0; 
  29. }.pack("side"=>"top")  
  30. label1.font(TkFont.new(:size => 15))   
  31.   
  32. #enter  
  33. entry = TkEntry.new(menuline2){ 
  34.     width 6 
  35. }.pack()  
  36. var = TkVariable.new("0")  
  37. entry.textvariable(var)  
  38. entry.font(TkFont.new(:size => 15))   
  39. entry.focus  
  40.   
  41. #label 2  
  42. label2 = TkLabel.new(root,'background' => 'green') { text "0" }  
  43. label2.font(TkFont.new(:size => 40))   
  44.   
  45. #button  
  46. button = TkButton.new(menuline2) { 
  47.   text "start" 
  48.   width 5 
  49.   height 1 
  50.   command proc { 
  51.    label2.text "#{var.value()}"   
  52.    for i in 0..5  
  53.     sleep 1  
  54.     label2.text("#{var.value().to_i-i}")  
  55.     $stdout.flush  
  56.     label2.pack()  
  57.    end  
  58.   }  
  59. }.pack("side"=>"right")  
  60. button.font(TkFont.new(:size => 15))   
  61.   
  62.   
  63. label2.pack()  
  64.   
  65.   
  66.   
  67. Tk.mainloop()  
  68. =begin  
  69. limit = 75   
  70.   
  71.     while limit > 0  
  72.     print "\r Time: #{limit} minute"  
  73.     $stdout.flush  
  74.     sleep 60  
  75.     limit-=1  
  76.     end  
  77.     print "\a\a\a\a\a"  
  78.     shutdown()  
  79. =end  


PM MAIL   Вверх
mes
Дата 15.1.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Ruby не знаю но по идеи должна быть командa  для label2  .update() или .refresh(), которая принудительно отрисует вид контрола.
В противном случае он отрисуется тогда когда дело дойдет  до главного цикла и обработается Paint -сообшение 

Это сообщение отредактировал(а) mes - 15.1.2008, 20:48


--------------------
PM MAIL WWW   Вверх
Google
  Дата 24.5.2019, 20:12 (ссылка)  





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


 




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


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

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