Как обновить три QLabel данными из одного QLineEdit?
Есть поле label_1_line_edit = QLineEdit()
, при вставке данных в него:
- в первом
label_1_label_total = QLabel()
число должно увеличиться на5
, - во втором
label_2_label_total = QLabel()
число должно уменьшится на2
, - в третьем
label_3_label_total = QLabel()
число должно увеличиться на10
.
main.py
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QLabel, QGridLayout, QLineEdit)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# hour counts
self.data_5 = 10
self.label_1 = QLabel()
self.label_1.setAlignment(Qt.AlignLeft)
self.label_1.setText('Поле1')
self.label_1.setStyleSheet(
"color: #1E5F74; font: 20pt;")
self.label_1_label_total = QLabel()
self.label_1_label_total.setAlignment(Qt.AlignLeft)
self.label_1_label_total.setStyleSheet(
"color: #1E5F74; font: 20pt;")
self.label_1_line_edit = QLineEdit()
self.label_1_line_edit.setPlaceholderText('Введите число')
self.label_1_line_edit.setMaxLength(2)
self.label_1_line_edit.textChanged.connect(self.label_count) # Реагируем на события изменения текста
layout = QGridLayout()
self.setLayout(layout)
layout.addWidget(self.label_1, 0, 0)
layout.addWidget(self.label_1_label_total, 0, 2)
layout.addWidget(self.label_1_line_edit, 0, 1)
# layout.addWidget(self.label_2_label_total, 1, 2)
# layout.addWidget(self.label_3_label_total, 2, 2)
def label_count(self, text):
try:
self.number = int(text)
self.label_1_label_total.setNum(self.number + self.data_5)
except Exception as e:
return
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = MyWidget()
widget.resize(200, 150)
widget.show()
sys.exit(app.exec())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я увидел вашу задачу так:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QFormLayout,
QWidget, QLabel, QGridLayout, QLineEdit)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# hour counts
self.data_5 = 5
self.data_2 = 2
self.data_10 = 10
self.label_1_label_total = QLabel(objectName='label_1',
alignment=Qt.AlignCenter)
self.label_2_label_total = QLabel(objectName='label_2',
alignment=Qt.AlignCenter)
self.label_3_label_total = QLabel(objectName='label_3',
alignment=Qt.AlignCenter)
self.label_1_line_edit = QLineEdit()
self.label_1_line_edit.setPlaceholderText('Введите число')
self.label_1_line_edit.setMaxLength(2)
self.label_1_line_edit.textChanged.connect(self.label_count)
layout = QFormLayout(self)
layout.addRow(QLabel("Поле1:"), self.label_1_label_total)
layout.addRow(QLabel("Поле2:"), self.label_2_label_total)
layout.addRow(QLabel("Поле3:"), self.label_3_label_total)
layout.addRow(self.label_1_line_edit)
def label_count(self, text):
try:
self.number = int(text)
self.label_1_label_total.setNum(self.number + self.data_5)
self.label_2_label_total.setNum(self.number + self.data_2)
self.label_3_label_total.setNum(self.number + self.data_10)
except Exception as e:
return
Stylesheet = '''
QLabel {
color: #1E5F74;
font: 15pt;
}
#label_1, #label_2, #label_3 {
color: #1E5F74;
font: 20pt;
}
QLineEdit {
font: 13pt;
}
'''
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyleSheet(Stylesheet)
widget = MyWidget()
widget.resize(200, 150)
widget.show()
sys.exit(app.exec())
Update:
Во втором QLabel число должно
уменьшится
на2
-self.label_2_label_total.setNum(self.number + self.data_2
...
self.label_2_label_total.setNum(self.number - self.data_2)
...