Как сделать чтобы при нажатии на кнопку бралось число из lineEdit и подставлялось в функцию расчёта и рисования QPainter используя flag и update()?
Нужно чтобы при нажатии на кнопку из поля ввода считывалось число и подставлялось в функцию.
Наверное из класса Example()
нужно как-то передать значения в классы Tab_1Widget()
и Tab_2Widget()
...
import sys
import PyQt5
from PyQt5 import QtCore, QtWidgets
from PyQt5.Qt import *
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(614, 478)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setObjectName("tabWidget")
#self.tab = QtWidgets.QWidget()
self.tab = Tab_1Widget()
self.tab.setObjectName("tab")
self.lineEdit = QtWidgets.QLineEdit(self.tab)
self.lineEdit.setGeometry(QtCore.QRect(40, 70, 113, 20))
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtWidgets.QPushButton(self.tab)
self.pushButton.setGeometry(QtCore.QRect(180, 70, 75, 23))
self.pushButton.setObjectName("pushButton")
self.tabWidget.addTab(self.tab, "")
#self.tab_2 = QtWidgets.QWidget()
self.tab_2 = Tab_1Widget()
self.tab_2.setObjectName("tab_2")
self.pushButton_2 = QtWidgets.QPushButton(self.tab_2)
self.pushButton_2.setGeometry(QtCore.QRect(480, 90, 75, 23))
self.pushButton_2.setObjectName("pushButton_2")
self.lineEdit_2 = QtWidgets.QLineEdit(self.tab_2)
self.lineEdit_2.setGeometry(QtCore.QRect(340, 90, 113, 20))
self.lineEdit_2.setObjectName("lineEdit_2")
self.tabWidget.addTab(self.tab_2, "")
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1"))
self.pushButton_2.setText(_translate("MainWindow", "PushButton"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2"))
class Tab_1Widget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.flag = False
a = int(self.lineEdit.text())
b = a * 2
c = a + b
def paintEvent(self, e):
if self.flag:
qp = QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()
def drawRectangles(self, qp):
qp.drawRect(10, 150, self.c, 60)
class Tab_2Widget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.a = int(self.lineEdit_2.text())
self.b = a + 2
self.c = b - a
self.lineEdit_2.setText(f'{c}')
self.flag = False
def paintEvent(self, e):
if self.flag:
qp = QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()
def drawRectangles(self, qp):
qp.drawRect(10, 150, 150, self.c)
class Example(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.onClicked)
self.pushButton_2.clicked.connect(self.onClicked2)
def onClicked(self):
self.tab.flag = True
self.update()
def onClicked2(self):
self.tab_2.flag = True
self.update()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = Example()
w.show()
sys.exit(app.exec_())
Источник: Stack Overflow на русском