Форум сайта python.su
rick
если не сложно, можно чуть подробнее про ее наследование, как это сделать и зачем?
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(420, 301)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
MainWindow.setMinimumSize(QtCore.QSize(420, 301))
MainWindow.setMaximumSize(QtCore.QSize(420, 301))
icon = QtGui.QIcon.fromTheme("drive-removable-media")
MainWindow.setWindowIcon(icon)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.label = QtWidgets.QLabel(self.centralWidget)
self.label.setGeometry(QtCore.QRect(10, 0, 59, 21))
self.label.setObjectName("label")
self.comboBox = QtWidgets.QComboBox(self.centralWidget)
self.comboBox.setGeometry(QtCore.QRect(10, 20, 401, 32))
self.comboBox.setObjectName("comboBox")
self.label_2 = QtWidgets.QLabel(self.centralWidget)
self.label_2.setGeometry(QtCore.QRect(10, 60, 59, 18))
self.label_2.setObjectName("label_2")
self.toolButton = QtWidgets.QToolButton(self.centralWidget)
self.toolButton.setGeometry(QtCore.QRect(380, 80, 33, 34))
self.toolButton.setText("")
icon = QtGui.QIcon.fromTheme("document-open")
self.toolButton.setIcon(icon)
self.toolButton.setObjectName("toolButton")
self.label_3 = QtWidgets.QLabel(self.centralWidget)
self.label_3.setGeometry(QtCore.QRect(10, 120, 41, 18))
self.label_3.setObjectName("label_3")
self.lineEdit = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit.setGeometry(QtCore.QRect(10, 140, 201, 32))
self.lineEdit.setObjectName("lineEdit")
self.label_4 = QtWidgets.QLabel(self.centralWidget)
self.label_4.setGeometry(QtCore.QRect(220, 120, 71, 18))
self.label_4.setObjectName("label_4")
self.comboBox_3 = QtWidgets.QComboBox(self.centralWidget)
self.comboBox_3.setGeometry(QtCore.QRect(220, 140, 191, 32))
self.comboBox_3.setObjectName("comboBox_3")
self.comboBox_3.addItem("")
self.comboBox_3.addItem("")
self.comboBox_3.addItem("")
self.line = QtWidgets.QFrame(self.centralWidget)
self.line.setGeometry(QtCore.QRect(10, 180, 401, 16))
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.progressBar = QtWidgets.QProgressBar(self.centralWidget)
self.progressBar.setGeometry(QtCore.QRect(10, 210, 401, 23))
self.progressBar.setProperty("value", 0)
self.progressBar.setObjectName("progressBar")
self.cancelButton = QtWidgets.QPushButton(self.centralWidget)
self.cancelButton.setGeometry(QtCore.QRect(320, 260, 88, 34))
icon = QtGui.QIcon.fromTheme("dialog-cancel")
self.cancelButton.setIcon(icon)
self.cancelButton.setObjectName("cancelButton")
self.writeButton = QtWidgets.QPushButton(self.centralWidget)
self.writeButton.setGeometry(QtCore.QRect(230, 260, 88, 34))
icon = QtGui.QIcon.fromTheme("dialog-ok")
self.writeButton.setIcon(icon)
self.writeButton.setObjectName("writeButton")
self.aboutButton = QtWidgets.QPushButton(self.centralWidget)
self.aboutButton.setGeometry(QtCore.QRect(10, 260, 88, 34))
icon = QtGui.QIcon.fromTheme("help-about")
self.aboutButton.setIcon(icon)
self.aboutButton.setObjectName("aboutButton")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_2.setGeometry(QtCore.QRect(10, 80, 361, 32))
self.lineEdit_2.setObjectName("lineEdit_2")
MainWindow.setCentralWidget(self.centralWidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "QImageWriter"))
self.label.setText(_translate("MainWindow", "Device:"))
self.label_2.setText(_translate("MainWindow", "ISO:"))
self.label_3.setText(_translate("MainWindow", "Label:"))
self.lineEdit.setText(_translate("MainWindow", "USB_STICK"))
self.label_4.setText(_translate("MainWindow", "Filesystem:"))
self.comboBox_3.setItemText(0, _translate("MainWindow", "FAT32"))
self.comboBox_3.setItemText(1, _translate("MainWindow", "NTFS"))
self.comboBox_3.setItemText(2, _translate("MainWindow", "EXT4"))
self.cancelButton.setText(_translate("MainWindow", "Cancel"))
self.writeButton.setText(_translate("MainWindow", "Write"))
self.aboutButton.setText(_translate("MainWindow", "About"))
#!/usr/bin/env python3
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from mainwindow import *
import sys
class MainProg (Ui_MainWindow):
def __init__(self, window):
Ui_MainWindow.__init__(self)
self.setupUi(window)
self.aboutButton.clicked.connect(self.about)
def about(self):
msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setWindowTitle('About')
msg.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = QMainWindow()
prog = MainProg(window)
window.show()
sys.exit(app.exec_())
Отредактировано py.user.next (Июнь 7, 2017 03:15:03)
Офлайн
py.user.next
Разобрался немного, решил поэксперементировать на старом скрипте, слепил для него интерфейс, вроде все красиво, но ругается на QWidget в 9 и 11 строке, что там не так?
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'myinterface.ui' # # Created by: PyQt5 UI code generator 5.8.2 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets import sys class Ui_MainWindow(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setupUi(self) def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(632, 480) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(10, 10, 131, 17)) self.label.setObjectName("label") self.lineEdit = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit.setGeometry(QtCore.QRect(140, 7, 113, 24)) self.lineEdit.setObjectName("lineEdit") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(10, 40, 68, 17)) self.label_2.setObjectName("label_2") self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_2.setGeometry(QtCore.QRect(80, 40, 113, 24)) self.lineEdit_2.setObjectName("lineEdit_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(10, 70, 171, 17)) self.label_3.setObjectName("label_3") self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_3.setGeometry(QtCore.QRect(180, 70, 113, 24)) self.lineEdit_3.setObjectName("lineEdit_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(10, 100, 231, 17)) self.label_4.setObjectName("label_4") self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_4.setGeometry(QtCore.QRect(250, 100, 113, 24)) self.lineEdit_4.setObjectName("lineEdit_4") self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(260, 150, 101, 17)) self.label_5.setObjectName("label_5") self.lineEdit_5 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_5.setGeometry(QtCore.QRect(10, 170, 611, 211)) self.lineEdit_5.setObjectName("lineEdit_5") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(520, 400, 99, 27)) self.pushButton.setObjectName("pushButton") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 632, 25)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.label.setText(_translate("MainWindow", "Сумма внесения:")) self.label_2.setText(_translate("MainWindow", "Процент:")) self.label_3.setText(_translate("MainWindow", "Интервал начислений:")) self.label_4.setText(_translate("MainWindow", "Срок вклада(указать в месяцах):")) self.label_5.setText(_translate("MainWindow", "Начисления:")) self.pushButton.setText(_translate("MainWindow", "Вычислить")) if __name__ == '__main__': app=QtGui.QGuiApplication(sys.argv) ex=Ui_MainWindow() ex.show() sys.exit(app.exec())
Отредактировано rick (Июнь 8, 2017 03:44:19)
Офлайн
rickВ PyQt5 QWidget находится в QtWidgets, а не в QtGui.
но ругается на QWidget в 9 и 11 строке, что там не так?
Офлайн
Разобрался немного, все запускается, вычисляет, но в цикле проводит только одну итерацию и выводит, хотя, тот же код в консоли все верно просчитывает. Да и со сравнением значений в коде проблема, то ли присвоение переменной значения из текстового поля не верно делается, то ли в дальнейшем как то иначе надо делать. Помогите разобраться.
main.py
# -*- coding: utf-8 -*- import sys # Импортируем наш интерфейс из файла from myinterface import * from PyQt5 import QtCore, QtGui, QtWidgets class MyWin(QtWidgets.QMainWindow): def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) # Здесь прописываем событие нажатия на кнопку self.ui.pushButton.clicked.connect(self.MyFunction) #Функция def MyFunction(self): a = int(self.ui.lineEdit.text()) b = float(self.ui.lineEdit_2.text()) c = int(self.ui.lineEdit_3.text()) d = int(self.ui.lineEdit_3.text()) i=0 if d < c: self.ui.textEdit.setText('Начислений нет, сумма за неполный период= '+str(a)) elif d>=c: e = a n = d / c # Сколько раз будет происходить начисление процентов за весь срок содержания суммы while i < n: # Лимит e += (a * b / 100);i += 1 # Начисление процентов self.ui.textEdit.setText('Сумма за ' + str(i) + ' начисление = ' + str(e) + ' руб.\nРазница "внесение-начисление"= ' + str(int(e - a)) + ' руб.') #if i == n: # self.ui.textEdit.setText('Разница "внесение-начисление"= ' + str(int(e - a)) + ' руб.') if __name__=="__main__": app = QtWidgets.QApplication(sys.argv) myapp = MyWin() myapp.show() sys.exit(app.exec_())
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'myinterface.ui' # # Created by: PyQt5 UI code generator 5.8.2 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(632, 480) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(10, 10, 131, 17)) self.label.setObjectName("label") self.lineEdit = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit.setGeometry(QtCore.QRect(140, 7, 113, 24)) self.lineEdit.setObjectName("lineEdit") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(10, 40, 68, 17)) self.label_2.setObjectName("label_2") self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_2.setGeometry(QtCore.QRect(80, 40, 113, 24)) self.lineEdit_2.setObjectName("lineEdit_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(10, 70, 171, 17)) self.label_3.setObjectName("label_3") self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_3.setGeometry(QtCore.QRect(180, 70, 113, 24)) self.lineEdit_3.setObjectName("lineEdit_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(10, 100, 231, 17)) self.label_4.setObjectName("label_4") self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_4.setGeometry(QtCore.QRect(250, 100, 113, 24)) self.lineEdit_4.setObjectName("lineEdit_4") self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(260, 150, 101, 17)) self.label_5.setObjectName("label_5") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(520, 400, 99, 27)) self.pushButton.setObjectName("pushButton") self.textEdit = QtWidgets.QTextEdit(self.centralwidget) self.textEdit.setGeometry(QtCore.QRect(10, 180, 611, 211)) self.textEdit.setObjectName("textEdit") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 632, 25)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.label.setText(_translate("MainWindow", "Сумма внесения:")) self.label_2.setText(_translate("MainWindow", "Процент:")) self.label_3.setText(_translate("MainWindow", "Интервал начислений:")) self.label_4.setText(_translate("MainWindow", "Срок вклада(указать в месяцах):")) self.label_5.setText(_translate("MainWindow", "Начисления:")) self.pushButton.setText(_translate("MainWindow", "Вычислить"))
a=int(input("Сумма первого внесения= ")) b=float(input("Процент начисления= ")) c=int(input("Раз в сколько месяцев происходит начисление? ")) d=int(input("На какой срок вносится сумма (Указать количество месяцев) ")) i=0 if d<c: print('Начислений нет, сумма за неполный период= '+str(a)) elif d>=c: e=a n=d/c #Сколько раз будет происходить начисление процентов за весь срок содержания суммы while i<n: #Лимит e+=(a*b/100);i+=1 #Начисление процентов print('Сумма за ' + str(i) + ' начисление = ' + str(e)+' руб.') # Вывод if i==n: print('Разница "внесение-начисление"= '+str(int(e-a))+' руб.')
Офлайн
rickЕсли так делать, то его нужно приплюсовывать к старому тексту: берёшь текст, который там есть, к нему плюсуешь новый текст, потом ставишь результат обратно.
но в цикле проводит только одну итерацию и выводит
Отредактировано py.user.next (Июнь 10, 2017 02:36:51)
Офлайн
py.user.next
Дело в том что, игнорируется код оператора условия, он первый if почему то всегда пропускает и начинает печать второе условие, но без итераций.
я уже мозги сломал, как так может быть. Если в консоль печатает все красиво
Офлайн
rickа как оно у вас выполнится, если у вас d=c ??
Дело в том что, игнорируется код оператора условия, он первый if почему то всегда пропускает и начинает печать второе условие, но без итераций.
c = int(self.ui.lineEdit_3.text()) #допустим у вас в лайн_едит3 цифра 5, с=5 d = int(self.ui.lineEdit_3.text()) # d=5 i=0 if d < c: # False d=c=5 self.ui.textEdit.setText('Начислений нет, сумма за неполный период= '+str(a)) ........... elif d>=c: # True d=c=5 n = d / c # Сколько раз будет происходить начисление процентов за весь срок содержания суммы # n=5/5=1 while i < n: # Сколько раз отрботает цикл при n=1??
[code python][/code]
Отредактировано PEHDOM (Июнь 11, 2017 14:55:05)
Офлайн
PEHDOM
господи, не заметил что там одно и то же поле ввода случайно, там edit3 и edit 4
Офлайн
rickПереименуй поля, числовые поля (с числами в именах) задействуют другую систему мозга, более сложную для запоминания и вспоминания. Числа не дают образов, а мозг при работе с памятью оперирует образами.
не заметил что там одно и то же поле ввода случайно, там edit3 и edit 4
Офлайн
py.user.next
Спасибо, попробую)
Подскажи пожалуйста, как вызвать форму из другой формы по нажатию на клавишу?
Офлайн