Я нашел эту простую программу в учебнике Youtube, в котором используются модули QtSide с python. В основном, это подключение QLineEdit
к QTextBrowser
. Как вы можете видеть ниже, вся программа обрабатывается одним классом. У меня есть основная идея функции super(), которая используется в множественном наследовании. Так вот, я не понимаю, что делает оператор super(Form, self).__init__(parent)
. Я попытался запустить ту же программу после комментирования этого оператора, который появился ниже в сообщении об ошибке.Какова цель использования python `super()`, внутри `__init__`, кроме наследования?
Ошибка: Код
Traceback (most recent call last):
File "/home/dazz/Projects/PycharmProjects/FirstTutorial/a2_gui.py", line 35, in <module>
form = Form()
File "/home/dazz/Projects/PycharmProjects/FirstTutorial/a2_gui.py", line 17, in __init__
self.setLayout(layout)
RuntimeError: '__init__' method of object's base class (Form) not called.
Программа:
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.browser = QTextBrowser()
self.lineEdit = QLineEdit()
layout = QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.lineEdit)
self.setLayout(layout)
self.lineEdit.returnPressed.connect(self.update_ui)
self.setWindowTitle('Calculate')
def update_ui(self):
try:
text = self.lineEdit.text()
self.browser.append('%s = %s' % (text, eval(text)))
self.lineEdit.selectAll()
except:
self.browser.append('%s is invalid!' % text)
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
Здесь, что использование super()
? Я нашел question, который может быть связан с этим. Но мне это непонятно.
поэтому setLayout (макет) является свойством объекта QDialog не так ли? – Srinesh
'self.setLayout()' является методом класса QDialog. –