Сторонние модули Python в PyQt

Я пытаюсь выбрать технологию разработки настольного приложения, которое может взаимодействовать с последовательным портом. Я изучил python, и похоже, что консольное приложение не составит труда - http://pyserial.sourceforge.net/ , и я также рассматривал PyQt, который выполнял часть моего проекта с графическим интерфейсом.

Но можно ли включить сторонние модули, такие как PySerial, в PyQt?


person Clint    schedule 26.07.2012    source источник
comment
Я не вижу здесь связи. Что заставляет вас думать, что вы не сможете использовать PySerial и PyQT в одном скрипте? Вы пробовали это, и это не сработало?   -  person Jeremiah    schedule 26.07.2012
comment
Может быть, я не понимаю фундаментальной концепции PyQt. Я подумал, что он каким-то образом скомпилирует мой код Python в исполняемый файл. Возможно, я ошибаюсь, и он связывает интерпретатор Python внутри приложения. Если верно первое, держу пари, что существует множество сторонних библиотек, которые не компилируются в машинный код. Это неверное предположение?   -  person Clint    schedule 30.07.2012
comment
Нет, PyQt работает совсем не так. Это обычная библиотека Python.   -  person Jeremiah    schedule 30.07.2012


Ответы (1)


PyQt и pyserial хорошо сочетаются друг с другом (на самом деле, я использую их в одном из своих приложений). Примеры на веб-сайте pyserial в основном представляют собой простые консольные примеры, но нет никаких причин, по которым вы не можете получать данные ни от одного из объектов pyserial. и использовать их в PyQt. Вы можете, например, взять данные, которые вы получили через последовательный порт, и поместить их в массив QByteArray или NumPy или что-то подобное на ваше усмотрение.

Пара предостережений: если вы используете Serial.readline(), он блокируется до тех пор, пока не получит новую строку (\n). Это может быть плохо для вашего графического интерфейса. Если вы должны использовать readline() вместо read(), я рекомендую поместить ваши действия, связанные с pyserial, в отдельный поток. Как вы это сделаете, зависит от вас, но я бы рекомендовал использовать встроенную в Qt поточность. Затем вы можете выполнять преобразования данных в типы Qt и т. д. внутри потока. Дополнительная информация о поточности в pyqt .

Изменить: чуть не забыл. Если кому-то интересно, вы можете использовать PyQt и для написания консольных приложений. Просто используйте QCoreApplication вместо QApplication. Однако не совсем уверен, зачем это делать в python, если вы действительно не любите типы данных Qt... в этом случае вы можете использовать PyQt и pyserial для написания чистого консольного приложения: D

person troy.unrau    schedule 30.07.2012