wxruby и rubymsn - PullRequest
       19

wxruby и rubymsn

1 голос
/ 05 декабря 2009

В настоящее время я играю с wxRuby и RubyMSN, чтобы научиться программировать desktop-программы. Я знаю, что это трудная задача, а не просто создание блокнота и т. Д., Но мне нужна более сложная задача, чем блокнот.

Теперь мне удается использовать их самостоятельно, но я не могу заставить их работать вместе. Проблема в петле.

RubyMSN хочет иметь бесконечный цикл, подобный

while true
  sleep 1
end

или используя mainloop GUI или что-то еще

В настоящее время у меня есть этот код в качестве цикла

TheApp.new.main_loop()
while true
  sleep 1
end

У меня работает окно, и main_loop что-то делает. Но я не могу войти, как будто у меня нет цикла (из из учебника ), я получаю только одну строку отладки. Но как только я закрываю окно и позволяю бесконечному циклу выполнять свою работу, он работает как шарм.

Кто-то?

1 Ответ

2 голосов
/ 05 декабря 2009

работал для меня. Попробуйте это: скопируйте образец minimal из дистрибутива wxruby и измените minimal.rb так, чтобы вы запускали ваш поток msn непосредственно перед основным циклом wx:

require 'msn/msn'

conn = MSNConnection.new("rubybot@channelwood.org", "secretpassword123")
conn.start

# Wx::App is the container class for any wxruby app. To start an
# application, either define a subclass of Wx::App, create an instance,
# and call its main_loop method, OR, simply call the Wx::App.run class
# method, as shown here.
Wx::App.run do 
  self.app_name = 'Minimal'
  frame = MinimalFrame.new("Minimal wxRuby App")
  frame.show
end

Вам понадобится использовать символическую ссылку на каталог msn внутри каталога minimal, чтобы, конечно, сработал оператор require.

Вам не нужен цикл while true {sleep 1}; это просто для предотвращения выхода из программы, чтобы ваш поток MSN мог продолжать работать. Основной цикл wx выполняет ту же задачу.

...