wxruby и rubymsn
В настоящее время я играю с wxRuby и RubyMSN, чтобы научиться программировать desktop-программы. Я знаю, что это трудная задача, а не просто создание блокнота и т. Д., Но мне нужна более сложная задача, чем блокнот.
Теперь мне удается использовать их самостоятельно, но я не могу заставить их работать вместе. Проблема в петле.
RubyMSN хочет иметь бесконечный цикл, как
while true
sleep 1
end
или используя mainloop GUI или что-то
В настоящее время у меня есть этот код в качестве цикла
TheApp.new.main_loop()
while true
sleep 1
end
У меня работает мое окно, а main_loop что-то делает. Но я не могу войти, как будто у меня нет цикла (из учебника), я получаю только одну строку отладки. Но как только я закрываю окно и позволяю бесконечному циклу выполнять свою работу, он работает как шарм.
Кто то?
1 ответ
Работал на меня. Попробуйте это: скопируйте 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
каталог, чтобы получить требуемый оператор работает, конечно.
Вам не нужно while true {sleep 1}
петля; это просто для предотвращения выхода из программы, чтобы ваш поток MSN мог продолжать работать. Основной цикл wx выполняет ту же задачу.