Как обновить QLabel данными из QLineEdit?
Как, набрав число в QLineEdit
, вставить это число в QLabel
, а перед выводом в QLabel
добавить к значению число 10
?
Например, ввели в QLineEdit
- 5
, в QLabel
вывелось - 15
.
main.py:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QLabel, QVBoxLayout, QLineEdit)
class MyWidget(QWidget):
def __init__(self):
QWidget.__init__(self)
self.my_label = QLabel()
self.line_edit = QLineEdit()
self.layout = QVBoxLayout()
self.layout.addWidget(self.my_label)
self.layout.addWidget(self.line_edit)
self.setLayout(self.layout)
self.line_edit.textChanged.connect(self.magic)
def magic(self):
self.A = 10
self.my_label.setText(self.line_edit.text())
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = MyWidget()
widget.resize(200, 150)
widget.show()
sys.exit(app.exec())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
void QLabel::setNum(int num)
Устанавливает содержимое
label
в виде обычного текста, содержащего текстовое представление целого числа. Любое предыдущее содержимое будет удалено.
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel,
QPushButton, QVBoxLayout, QLineEdit, QMessageBox)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.certain_number = 10
self.my_label = QLabel()
self.my_label.setAlignment(Qt.AlignCenter)
self.my_label.setStyleSheet(
"color: #1E5F74; font: 20pt;")
self.line_edit = QLineEdit()
self.line_edit.textChanged.connect(self.magic)
self.layout = QVBoxLayout(self)
self.layout.addWidget(self.my_label)
self.layout.addWidget(self.line_edit)
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def magic(self, text):
try:
number = int(text)
self.my_label.setNum(number + self.certain_number)
except Exception as e:
msg = QMessageBox.information(
self,
'Внимание',
'Проверьте ввод данных. \nВведите число.')
return
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = MyWidget()
widget.resize(600, 300)
widget.show()
sys.exit(app.exec())