Форум сайта python.su
0
Доброго времени суток! Я только начала писать на питоне, поэтому пока плохо разбираюсь.
Подскажите, что я написала неправильно в коде?
from PyQt4 import QtCore, QtGui param={"count_obj_fun":2,"count_var":3,"count_const":4} class MyWindow(QtGui.QWidget): def __init__(self,parent=None): super(QtGui.QWidget,self).__init__() i=0 j=0 grid=QtGui.QGridLayout() for i in (0,param["count_obj_fun"]): self.label[i]=QtGui.QLabel("Целевая функция f"+str(i)) grid.addWidget(self.label[i],i,0,QtCore.Qt.AlignLeft) for j in (0,param["count_var"]): self.edx[i]=QtGui.QTextEdit grid.addWidget(self.edx[i],i,j+1,QtCore.Qt.AlignLeft) if __name__=="__main__": import sys app=QtGui.QApplication(sys.argv) window=MyWindow() window.setWindowTitle("Ввод целевой функции") window.resize(30,50) window.show() sys.exit(app.exec_())
Офлайн
3
Mars30
В общем, super(QtGui.QWidget,self) - это вызов конструктора родительского класса QtGui.QWidget. В питоне приходится в наследуемом классе вызывать конструкторы родительских, потому что сам питон этого не сделает, ведь метод __init__() мы переопределили, верно?
По-другому можно было бы написать QtGui.QWidget.__init__(self) вроде.
Насчет label: наверное, его надо сначала объявить, прежде чем в цикле заполнять, если я правильно думаю.
Офлайн
0
valentjedi я не совсем понимаю по поводу объявления label, в питоне же не требуется специальное объявление? и если объявлять, то тогда как? я просто пока еле-еле разбираюсь во всем
Офлайн
3
Mars30
К сожалению, для моего Python 3.4 пока нет PyQt, так что точно не скажу. Но по-моему, к label нельзя обращаться как label. Может, попробовать без , либо еще до цикла написать что-нибудь вроде self.label = QtGui.QLabel()
Отредактировано valentjedi (Май 4, 2014 17:53:10)
Офлайн
568
Mars30Не совсем верно. В питоне и других языках тип переменной определяется в момент присваивания автоматически. То есть вполне нормально
питоне же не требуется специальное объявление? и если объявлять, то тогда как?
a = 1 a = count()
a[1] = 7
a = [] a[1] = 7
a = {} a[1] = 7
Отредактировано FishHook (Май 4, 2014 17:57:24)
Офлайн
0
я попробовала сделать список, но у меня теперь вообще все зависает(
Офлайн
3
Сделать список, это то есть self.label = , что ли? Так точно не нужно. Попробуйте self.label = QtGui.QLabel()
Офлайн
568
Mars30ну зачем Вы беретесь за относительно сложную программу, с ГУИ, если не понимаете основ?
я попробовала сделать список, но у меня теперь вообще все зависает(
Офлайн
0
FishHook потому что у меня нет возможности написать то, что мне нужно на другом языке. Это курсовая, мне ее надо доделывать срочно, а учебник я и так читаю
Офлайн
0
valentjediпопробовала это вариант, также возникает ошибка, но теперь другая QLabel object does not support item assigment. Суть ошибки этой мне ясна, но толку-то, проблему это не решает
Сделать список, это то есть self.label = , что ли? Так точно не нужно. Попробуйте self.label = QtGui.QLabel()
Офлайн