Найти - Пользователи
Полная версия: Как исправить ошибки?
Начало » Python для новичков » Как исправить ошибки?
1 2 3
Mars30
FishHook
Не совсем верно. В питоне и других языках тип переменной определяется в момент присваивания автоматически
это и так понятно
valentjedi
В общем, вот так это запустится:
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):
        global param
        super(QtGui.QWidget,self).__init__()
        i=0
        j=0
        grid=QtGui.QGridLayout()
        self.label = QtGui.QLabel("Целевая функция f")
        self.edx=QtGui.QTextEdit()
        #self.edx = QtGui.QWidget()
        for i in (0,param["count_obj_fun"]):
            self.label.text="Целевая функция f"+str(i)
            grid.addWidget(self.label,i,0,QtCore.Qt.AlignLeft)
            for j in (0,param["count_var"]):
                
                grid.addWidget(self.edx,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_())
То есть мы объявили label и edx до их использования, и да, они не поддерживают обращение по индексу.
Однако запустится пустое окошко. Или так и должно быть? Вообще, в чем задача-то?
FishHook
Mars30
это и так понятно
Не всем это понятно, посмотри в свой код на первой странице.
self.label[i]=QtGui.QLabel("Целевая функция f"+str(i))  
ну и где ты определил self.label как список?
Mars30
FishHook
ну и где ты определил self.label как список
я повторно код не кидала в ответы
Mars30
valentjedi
Вообще, в чем задача-то?
Задача состоит в написании программы для решения многокритериальных задач оптимизации, должна поддерживаться интерактивность, т.е. пользователь сам выбирает сколько целевых функций, переменных и ограничений, в зависимости от его выбора меняются последующие формы. Я бы так не парилась с питоном, если бы у него сама математика не решалась в пакете pyBrain. Окошко для ввода общего количества целевых функций, переменных и ограничений я сделала, теперь проблема сделать эту интерактивность, т.е. мне теперь надо добавлять на окно столько label и TextEdit, сколько выбрал пользователь. Сюда я выложила код только второго окна. Словарь param как раз содержит сколько чего выбрал пользователь, но я сделала эти значения пока постоянные
Mars30
FishHook,
я от вас не вижу помощи, только едкие комментарии
Mars30
valentjedi
Однако запустится пустое окошко
да, действительно, пустое окно, но хотя бы что-то, раньше вообще не запускалось)
Mars30
valentjedi
for i in (0,param):
self.label.text=“Целевая функция f”+str(i)
тут тогда получается мы просто у label меняем текст, а новые label не создаются, хотя странно, что не выводится вообще ничего
valentjedi
Mars30
Суть в том, что надо каждый раз создавать новый лейбл и добавлять его в layout. А главное в том, чтобы в Ваше окно установить этот layout. Вот пример для двух лейблов и текст эдитов, в цикл уже загоняйте сами:
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__()
        self.grid=QtGui.QGridLayout()
        self.grid.addWidget(QtGui.QLabel("label1"))
        self.grid.addWidget(QtGui.QTextEdit())
        self.grid.addWidget(QtGui.QLabel("label2"))
        self.grid.addWidget(QtGui.QTextEdit())
        self.centralWidget = QtGui.QWidget(self)
        self.centralWidget.setLayout(self.grid)
if __name__=="__main__":
    import sys
    app=QtGui.QApplication(sys.argv)
    window=MyWindow()
    window.setWindowTitle("Ввод целевой функции")
    window.show()
    sys.exit(app.exec_())
Mars30
valentjedi, спасибо большое, тут и мне по силам разобраться и вам пришлось старый питон устанавливать из-за меня, приятно
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