Интерпретация строк как имен переменных (участвуют классы) - Python - PullRequest
1 голос
/ 19 сентября 2011

У меня есть несколько строк имен переменных, которые изначально должны быть строками (из-за файлового ввода-вывода).
Переменные, которым они соответствуют, являются именами переменных виджетов PyQt4, встроенных в два класса.

Мне нужно, чтобы эти строки можно было преобразовывать в реальные имена переменных, чтобы использовать их в функциях.
(Вроде как вы 'int' строки числа)

Вот код (Показывающий безумие класса)

ПЕРВЫЙ ФАЙЛ

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.VariableName = QWidget(whatever)

ВТОРОЙ ФАЙЛ

from FIRST_FILE import Ui_MainWindow

class Start(QtGui.QMainWindow):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
    def ResetDropBoxes(self):
        X = "VariableName"
        self.ui.X.Function()

Некоторые могут признать это как формат кода Python, сгенерированного Pyuic4 (Qt Designer)

Последние две строки Второго файла - это проблема. Я получаю сообщение об ошибке «Ui_MainWindow () не имеет атрибута« X »».

Я понятия не имел, куда идти с этим, кроме попытки с «eval». Я пробовал такие вещи, как ...

X = self.ui.eval("VariableName")

Это вызвало ошибки "Ui_MainWindow () не имеет атрибута 'eval'

X = eval("VariableName")

«Имя переменной не определено»

X = "VariableName"
eval(self.ui.X.Function())

"Ui_MainWindow () не имеет атрибута 'X'"


Я мог бы использовать любую помощь в этом вопросе!
Я чувствую, что eval приближает меня на шаг, но использование этих вложенных классов тормозит это!

HALP?!


ОПИСАНИЕ:
- Python 2.7.1
- Windows 7 (32 бита)
- IDLE 1.8
- PyQt4
- Qt Designer

1 Ответ

6 голосов
/ 19 сентября 2011

Попробуйте

getattr(self.ui, VariableName).Function()

См. здесь для получения дополнительной информации о getattr.

...