Внести переменные в приложение Python lib PyQt5
Готовлю приложение с использованием библиотеки PyQt5, код приведен ниже.
Вопрос вот в чем, как дополнить код, чтобы пользователь в диалоговое окно мог внести данные, которые можно использовать для расчета?
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import QSize
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setMinimumSize(QSize(300, 200))
self.setWindowTitle("PyQt button example - pythonprogramminglanguage.com")
pybutton = QPushButton('Click me', self)
pybutton.clicked.connect(self.clickMethod)
pybutton.resize(100,32)
pybutton.move(50, 50)
def calc():
return 10 + 20 # Данные которые вводятся пользователем
def clickMethod(self):
print('Clicked Pyqt button.')
calc()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit( app.exec_() )
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Как вариант:
import sys
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, \
QWidget, QPushButton, QDialog, QLineEdit, QVBoxLayout, \
QFormLayout, QMessageBox, QApplication
from PyQt5.QtCore import QSize
class Dialog(QDialog):
def __init__(self, parent):
super(Dialog, self).__init__()
self.parent = parent
self.x = QLineEdit(self)
self.y = QLineEdit(self)
self.button = QPushButton('Выполнить расчет.', self)
self.button.clicked.connect(self.onClicked)
layout = QFormLayout(self)
layout.addRow("x:", self.x)
layout.addRow(QLabel("y:"), self.y)
layout.addRow('', self.button)
def onClicked(self):
if self.x.text() and self.x.text():
try:
x = float(self.x.text())
y = float(self.y.text())
except:
QMessageBox.information(
self,
'Information',
'Некорректно введены данные. Повторите ввод данных.')
return
self.parent.label.setText(f'{x} + {y} = {x + y:.3f}')
self.close()
else:
QMessageBox.information(
self,
'Information',
'Нет данных для расчета.')
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.date = None
self.label = QLabel()
pybutton = QPushButton('Click me', self)
pybutton.clicked.connect(self.clickMethod)
self.dialog = Dialog(self)
layout = QVBoxLayout(self.centralWidget)
layout.addWidget(self.label)
layout.addWidget(pybutton)
def calc(self):
self.dialog.exec_()
# return 10 + 20 # Данные которые вводятся пользователем
def clickMethod(self):
self.date = self.calc()
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.resize(300, 200)
mainWin.setWindowTitle("Htllo PyQt")
mainWin.show()
sys.exit(app.exec_())
