Найти - Пользователи
Полная версия: Супер классы
Начало » Python для новичков » Супер классы
1
Guljaca
Ни разу еще не пользовался супер классами.
Попытался создать супер класс бара Qt. Теоритически, он должен был унаследовать атрибуты QProgressBar, после чего, отображен в главном окне, но что-то пошло не так.
Объясните, в чем проблема и как реализовать задумку?

Ошибка
Traceback (most recent call last):
  File "E:\Desktop\instruments\tools.py", line 20, in <module>
    test = Test()
  File "E:\Desktop\instruments\tools.py", line 14, in __init__
    self.bar = Bar(100,100,100,200,150)
  File "E:\Desktop\instruments\tools.py", line 6, in __init__
    self.setRange(value_min,value_max)
RuntimeError: super-class __init__() of %S was never called

Код
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
app = QApplication(sys.argv)
class Bar(QProgressBar):
    def __init__(self, xmax, ymax, value_min, value_max, value,  text_visible=False):
        #self.resize(xmax,ymax)
        self.setRange(value_min,value_max)
        self.setTextVisible(text_visible)
        self.setValue(value)
class Test(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.resize(100,200)
        self.bar = Bar(100,100,100,200,150)
        self.layout = QVBoxLayout(self)
        self.layout.addWidget(self.bar)
if __name__ == '__main__':
    test = Test()
    test.show()
    sys.exit(app.exec_())
JOHN_16
Guljaca
    def __init__(self, xmax, ymax, value_min, value_max, value,  text_visible=False):
super(Bar, self).__init__() # Вероятно это вам нужно
self.setRange(value_min,value_max)
self.setTextVisible(text_visible)
Guljaca
Спасибо. Еще хорошо бы описать эту строчку. Что она делает?
JOHN_16
Guljaca
И тут на на помощь приходит и официальная документация по super(), так и Google, например по запросу “Python super” первая же ссылка доступно объясняет по русски зачем это нужно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB