Форум сайта python.su
Начинаю простой проект, дипломная работа.
GUI несёт подчинённый характер и не должен мешать работе.
Подскажите какой enviroment собрать, какую библиотеку, какую IDE использовать?
Интерфейс будет нужен простой, но и не 3 lineEdit'a
Очень хочется делать интерфейс не написанием кода а form editor'ом. Любым, не обязательно qt
Сейчас установлен Visual Studio Code, pyQt5
Простой пример работает:
- в qtDesigner сделал форму, конвертнул её в python код
- открыл в VSC и дописал обработку событий. Запустил = работает
- вернулся в qtDesigner, поменял форму и сохранил ui
! Но если я теперь выполню pyuic5, то потеряю все написанные мной обработчики
Вопрос насущный, просьба не переводить в холивар между qt и gtk
Мне надо решить утилитарную проблему. Иметь возможность под Windows интерфейс к своей программе, и желательно делать его не путем изучения джанго или qml, а с минимальными затратами.
Накидал, вывел результаты, поменял рамочки/цвета, вывел заново, добавил чек-бокс, вывел… Добавил график, вывел. Ну вот и получилось.
Отредактировано softland (Дек. 2, 2018 10:40:07)
Офлайн
softlandВ смысле? Так ты давай осмысленные имена всем элементам, не используя нумерацию вроде button1 button2. Используй buttonQuit, buttonStartProcess.
Но если я теперь выполню pyuic5, то потеряю все написанные мной обработчики
Отредактировано py.user.next (Дек. 2, 2018 11:30:49)
Офлайн
1 self.statusbar.setObjectName("statusbar")
2 MainWindow.setStatusBar(self.statusbar)
3
4 self.btnSelectImage.clicked.connect(self.setImage) #строка написанная мной
5 self.btnAdd.clicked.connect(self.addItem) #строка написанная мной
Отредактировано softland (Дек. 2, 2018 12:03:27)
Офлайн
softlandТак не надо в нём ничего писать. Его надо просто импортировать и установить как интерфейс окна. А писать уже всё надо в этом окне, которое к форме никак не относится.
Сооветственно, после выполнения pyuic5 получу новый файл “py” в котором не будет строк 4 и 5
и самих функций setImage и addItem. Хоть какие названия я дам btnAdd и btnSelectImage.
softlandmainwindow.ui преобразуется в mainwindow.py
команда
pyuic5 -x “main.ui” -o “main.py”
... from mainwindow import Ui_MainWindow class App(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.setup_ui() self.center() self.show() def center(self): rect = self.frameGeometry() best_position = QDesktopWidget().availableGeometry().center() rect.moveCenter(best_position) self.move(rect.topLeft()) def setup_ui(self): self.setup_ui_menu() self.setup_ui_statusbar() self.setup_ui_control_buttons() self.setup_ui_iprange_frame() self.setup_ui_ports_frame() ...
Отредактировано py.user.next (Дек. 2, 2018 13:08:40)
Офлайн
Вах. Всё просто!
Спасибо огромное.
А подскажите,
1. какую IDE вы используете?
2. автоподстановка в коде у Вас работает полностью, ваша IDE “знает” все методы QT?
3. мой VSC не проверяет написанный мной код на корректность. ошибки я получаю только на этапе выполнения. пример ниже
Офлайн
softlandEmacs (не IDE, а программируемый редактор)
какую IDE вы используете?
softlandВ Emacs можно сделать подсказки, но я использую Qt Assistant, в котором есть полная справка по всем классам Qt.
автоподстановка в коде у Вас работает полностью, ваша IDE “знает” все методы QT?
>>> PyQt5.Qt.Qt.KeepAspectRatio 1 >>>
Отредактировано py.user.next (Дек. 2, 2018 15:26:42)
Офлайн
Не IDE а программируемый редактор Emacs хорошо, понятно.
Я имел в виду не то, есть там справка или нет, а то, что набрав
QtCore.Qt.
Офлайн
softlandУ него есть модуль, который залазит в докстринги и через них выдаёт набор доступных имён. Это как если бы он сделал в консоли help(QtCore) и оно автоматически собрало всю информацию и имена все. То есть он выводит имя метода или класса и докстринг его.
Емасs сам предложит список параметров, методов, констант - среди которых будет KeepAspectRatio?
softlandЯ его не введу, потому что сначала думаю, что написать. А если будет опечатка, то при запуске оно в нем выпадет и я его сразу поправлю. Если же это чужой код, в котором куча опечаток, то, возможно, есть средства автоматического переименовывания. Но обычно, когда чужой код беру, я через выпадения нахожу неправильные идентификаторы и исправляю их по памяти или по справке.
И, что будет если Вы не глядя ни на что, наберёте keepAspectRatio?
Отредактировано py.user.next (Дек. 3, 2018 01:46:46)
Офлайн
Спасибо.
py.user.nextЯ правильно понимаю, перед запуском скрипта он ВЕСЬ будет автоматически проверен на корректность…
А если будет опечатка, то при запуске оно в нем выпадет и я его сразу поправлю.
Офлайн
softlandНет. Просто запускаешь, он выпадает и информирует тебя о том, что произошло. Это если наскоряк делать. А вообще это делается в юнит-тестах, которые запускают все функции, а потом выводят все места, где ошибки произошли. Так ты можешь один раз запустить, получить десять ошибок и исправить их все. Потом запускаешь, все тесты прошли - ok, дальше пишешь программу.
Я правильно понимаю, перед запуском скрипта он ВЕСЬ будет автоматически проверен на корректность…
Отредактировано py.user.next (Дек. 3, 2018 11:07:11)
Офлайн