Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Графический интерфейс и многопоточность  (Прочитано 2471 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Здравствуйте!

Есть программа, каковая рассчитывает некоторую модель (многоагентное моделирование). Программа на С++, но будет интерфейс к питону через boost python. Сейчас её графический интерфейс заключается единственно в выводе в текстовый терминал, что несколько ограничивает возможности визуализации. Посему я хочу сделать графический интерфейс, однако поскольку я имею о нём весьма слабое представление, то обращаюсь к вам.

Суть такова. Я хочу, чтобы можно было бы запускать/останавливать моделирование и изменять некоторые его параметры, причём как из графического интерфейса, так и из командной строки ipython. И, разумеется, чтобы и графический, и командный интерфейс были доступны в то время, когда идёт расчёт, и картинка бы рисовалась в реальном времени. Картинку же я думаю сделать двух различных видов - в мелком масштабе, когда каждой клетке мира (мир двумерный) соответствует цветной пиксель, и в крупном масштабе - когда рисуется каждый агент и для него отображается некоторая текстовая информация. Желательно, чтобы хотя бы первый вариант работал быстро, но главный приоритет - всё же настраиваемость (скажем, чтобы в питоне можно было бы определить функцию задания цвета и тут же её применить). Также желательно рисовать графики в реальном времени (в идеале - matplotlib).

Посоветуйте следующее:

- Какую библиотеку(и) выбрать? И что по ней читать?

- Также хотелось бы почитать что-либо об принципах функционирования графических интерфейсов. В частности, какие там потоки, когда они создаются и что они делают - а то порой я строю графики в матплотлибе, в одних случаях командная строка недоступна, пока окно открыто, а в других доступна, и я не понимаю, от чего это зависит.

- А также что-либо об многопоточности. Интересует как теория, так и многопоточность в питоне, ибо об ней ходят различные страшилки.

- И хотелось бы услышать совет, как мне лучше организовать программу. Скажем, сколько и каких потоков создавать и как производить общение между ними.

Заранее благодарен.
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Графический интерфейс и многопоточность
« Ответ #1 : 16 Августа 2011, 17:01:48 »
QT

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Графический интерфейс и многопоточность
« Ответ #2 : 17 Августа 2011, 06:58:42 »
[trollmode]
Apple - QuickTime? =)
[/trollmode]

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Графический интерфейс и многопоточность
« Ответ #3 : 17 Августа 2011, 13:37:43 »
[trollmode]
Trolltech?
[/trollmode]
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Графический интерфейс и многопоточность
« Ответ #5 : 17 Августа 2011, 17:21:26 »
Qt, правда придется повозится с потоками и тем, что бы прога не падала от изменений внешним потоком.
Советую начать с QtConcurrent.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Графический интерфейс и многопоточность
« Ответ #6 : 18 Августа 2011, 07:14:20 »
советую начать с однопоточных приложений
и уже давно не Trolltech, даже сама нокия не занимается Qt вроде бы. аутсорсит какой-то компании что-то там на D начинается

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Графический интерфейс и многопоточность
« Ответ #7 : 18 Августа 2011, 10:54:51 »
А чем qt лучше остальных?
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Графический интерфейс и многопоточность
« Ответ #8 : 18 Августа 2011, 18:10:16 »
Тем что он проще. У него ЛУЧШАЯ документация (это факт). Есть своя среда разработки. И он включает в себя ВСЕ. Начиная от работ со строками, и заканчивая многопоточностью.
Ну и он самый популярный.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Графический интерфейс и многопоточность
« Ответ #9 : 19 Августа 2011, 01:06:55 »
Я пока что с буст питоном не могу совладать. http://python.su/forum/viewtopic.php?id=12158
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Графический интерфейс и многопоточность
« Ответ #10 : 20 Августа 2011, 16:29:15 »
А что об этом кутэ читать?
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Графический интерфейс и многопоточность
« Ответ #11 : 20 Августа 2011, 16:58:00 »
А что об этом кутэ читать?
вот тут http://doc.crossplatform.ru/qt/4.7.x/ документация
вот тут очень хороший форум http://www.prog.org.ru/index.php
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Графический интерфейс и многопоточность
« Ответ #13 : 20 Августа 2011, 19:46:36 »
Премного благодарен!
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Графический интерфейс и многопоточность
« Ответ #14 : 20 Августа 2011, 23:58:54 »
Ну вроде рисование кнопок и повешение на них действий я асилил, теперь меня помимо всего прочего мучает следующий вопрос.

Насколько я понял, кутэ создаёт второй поток, в каковом обрабатывает события (при этом командная консоль работоспособна, то бишь одна из моих мечт осуществилась). И теоретически должно быть можно сделать так, чтобы когда никаких событий не приходит, сей поток бы не простаивал, а выполнял полезную работу (то бишь считал мою замечательную модель). Некоторое время назад я нашёл пример, в каковом подобное делалось с помощью matplotlib и gtk, а именно следующим образом:

gobject.idle_add(updatefig)
, где updatefig - процедура, исполняемая при бездействии. Как сделать аналогичное на qt?
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

 

Страница сгенерирована за 0.021 секунд. Запросов: 21.