Форум сайта python.su
Написал приложение с помощью PyQt
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'myinterface.ui' # # Created by: PyQt5 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost! from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QDesktopWidget from PyQt5.QtGui import QIcon from PyQt5.QtCore import QCoreApplication try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(632, 480) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.label = QtGui.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(10, 10, 131, 17)) self.label.setObjectName(_fromUtf8("label")) self.lineEdit = QtGui.QLineEdit(self.centralwidget) self.lineEdit.setGeometry(QtCore.QRect(140, 7, 113, 24)) self.lineEdit.setObjectName(_fromUtf8("lineEdit")) self.label_2 = QtGui.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(10, 40, 68, 17)) self.label_2.setObjectName(_fromUtf8("label_2")) self.lineEdit_2 = QtGui.QLineEdit(self.centralwidget) self.lineEdit_2.setGeometry(QtCore.QRect(80, 40, 113, 24)) self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2")) self.label_3 = QtGui.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(10, 70, 171, 17)) self.label_3.setObjectName(_fromUtf8("label_3")) self.lineEdit_3 = QtGui.QLineEdit(self.centralwidget) self.lineEdit_3.setGeometry(QtCore.QRect(180, 70, 113, 24)) self.lineEdit_3.setObjectName(_fromUtf8("lineEdit_3")) self.label_4 = QtGui.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(10, 100, 231, 17)) self.label_4.setObjectName(_fromUtf8("label_4")) self.lineEdit_4 = QtGui.QLineEdit(self.centralwidget) self.lineEdit_4.setGeometry(QtCore.QRect(250, 100, 113, 24)) self.lineEdit_4.setObjectName(_fromUtf8("lineEdit_4")) self.label_5 = QtGui.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(260, 150, 101, 17)) self.label_5.setObjectName(_fromUtf8("label_5")) self.lineEdit_5 = QtGui.QLineEdit(self.centralwidget) self.lineEdit_5.setGeometry(QtCore.QRect(10, 170, 611, 211)) self.lineEdit_5.setObjectName(_fromUtf8("lineEdit_5")) self.pushButton = QtGui.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(520, 400, 99, 27)) self.pushButton.setObjectName(_fromUtf8("pushButton")) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 632, 25)) self.menubar.setObjectName(_fromUtf8("menubar")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.pushButton.clicked.connect(self.myFunction) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) self.label.setText(_translate("MainWindow", "Сумма внесения:", None)) self.label_2.setText(_translate("MainWindow", "Процент:", None)) self.label_3.setText(_translate("MainWindow", "Интервал начислений:", None)) self.label_4.setText(_translate("MainWindow", "Срок вклада(указать в месяцах):", None)) self.label_5.setText(_translate("MainWindow", "Начисления:", None)) self.pushButton.setText(_translate("MainWindow", "Вычислить", None)) def MyFunction(self): self.a = int(input(self.lineEdit.text())) self.b = float(input(self.lineEdit_2.text())) self.c = int(input(self.lineEdit_3.text())) self.d = int(input(self.lineEdit_4.text())) i=0 if d < c: lineEdit_5=('Начислений нет, сумма за неполный период= '+str(a)) elif d >= c: e = a n = d / c # Сколько раз будет происходить начисление процентов за весь срок содержания суммы while i < n: # Лимит e += (a * b / 100);i += 1 # Начисление процентов lineEdit_5 = ('Сумма за ' + str(i) + ' начисление = ' + str(e)+' руб.') # Вывод if i == n: tlineEdit_5 = ('Разница "внесение-начисление"= ' + str(int(e - a)) + ' руб.') if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
if __name__ == “__main__”:
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
line 9, in <module>
from PyQt5 import QtCore, QtGui, QtWidgets
ImportError: /usr/local/lib/python3.5/dist-packages/PyQt5/QtCore.so: invalid ELF header
line 10, in <module>
from PyQt5.QtWidgets import QApplication
ImportError: /usr/local/lib/python3.5/dist-packages/PyQt5/QtWidgets.so: invalid ELF header
line 26, in <module>
class Ui_MainWindow(object):
line 107, in Ui_MainWindow
app = QtWidgets.QApplication(sys.argv)
NameError: name ‘QtWidgets’ is not defined
Отредактировано rick (Июнь 5, 2017 07:20:08)
Офлайн
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QDesktopWidget from PyQt5.QtGui import QIcon from PyQt5.QtCore import QCoreApplication
import __hello__
Офлайн
Разобрался, использую IDE PyCharm, просто надо добавить PyQt5 из которого мы импортируем. Делается это тут: File > Settings > Project Interpreter(выбираем интерпритатор и жмем зеленый +, ищем то что нужно, в моем случае PyQt5). У меня ругалась на то что можно обновить версию pip, немного повозился, но все поднялось.
Разгребаем ошибки в коде дальше…
Вылезло вот это:
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)Все же хотелось бы понять больше про блок:
if __name__ == “__main__”:как он генерируется и что это вообще?
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Отредактировано rick (Июнь 5, 2017 07:43:48)
Офлайн
WARNING! All changes made in this file will be lost!
Как думаешь для кого это написали?
Офлайн
Rodegast
код ведь в порядке, какие изменения могли потеряться?
Офлайн
Офлайн
rickТы делаешь форму в дизайнере, потом по ней генерируешь питон-код и потом этот питон-код добавляешь в своё приложение через наследование от этого питон-кода. Все вычисления делаешь в своём приложении, а с формой в виде питон-кода просто общаешься через её автоматически сгенерированные методы, не более. Когда в форме что-то надо изменить (внешний вид, количество кнопок и так далее), ты снова меняешь её в дизайнере, потом генерируешь по ней новый питон-код и кладёшь на место старого питон-кода формы. Таким образом твоё приложение всё время просто общается с формой, какой бы она ни была.
код ведь в порядке, какие изменения могли потеряться?
Отредактировано py.user.next (Июнь 6, 2017 01:59:48)
Офлайн
py.user.next
Спасибо за ваш ответ, наконец то, кто то прояснил этот момент. Искренне благодарен!
Т.е. мне надо просто импортировать форму как модуль? и можно спокойно обращаться к объектам в этом модуле?
Отредактировано rick (Июнь 6, 2017 13:20:39)
Офлайн
rickНужно и импортировать, и ещё отнаследоваться от неё. Главное окно программы наследуешь от неё и оно принимает её вид.
Т.е. мне надо просто импортировать форму как модуль?
Офлайн
py.user.next
если не сложно, можно чуть подробнее про ее наследование, как это сделать и зачем?
Офлайн