Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2012 22:12:57

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Супер классы

Ни разу еще не пользовался супер классами.
Попытался создать супер класс бара 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_())



Офлайн

#2 Дек. 13, 2012 01:54:39

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Супер классы

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)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Дек. 13, 2012 02:01:41

Guljaca
От:
Зарегистрирован: 2011-07-11
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Супер классы

Спасибо. Еще хорошо бы описать эту строчку. Что она делает?



Офлайн

#4 Дек. 13, 2012 03:53:47

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Супер классы

Guljaca
И тут на на помощь приходит и официальная документация по super(), так и Google, например по запросу “Python super” первая же ссылка доступно объясняет по русски зачем это нужно.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version