将字符串解释为变量名(涉及类)- Python

1 投票
1 回答
1126 浏览
提问于 2025-04-17 02:35

我有一些变量名的字符串,这些字符串一开始必须是字符串类型(因为要进行文件输入输出)。
这些变量对应的是PyQt4控件的变量名,嵌套在两个类里面。

我需要这些字符串能够转换成实际的变量名,以便在函数中使用它们。
(有点像把一个数字的字符串转换成整数那样)

这是代码(展示了类的复杂性)

第一个文件

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()

有些人可能会认出这是由Pyuic4(Qt Designer)生成的Python代码格式

第二个文件的最后两行是问题所在。
我收到错误信息“Ui_MainWindow()没有属性'X'”。

我不知道该怎么处理这个问题,除了尝试使用'eval'。
我尝试了一些东西,比如……

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

这导致了错误“Ui_MainWindow()没有属性'eval'”

X = eval("VariableName")

“VariableName未定义”

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

“Ui_MainWindow()没有属性'X'”


我非常需要帮助!
我觉得使用eval能让我更接近解决方案,但由于使用了这些嵌套类,导致它无法正常工作!

求助'?!


详细信息:
- Python 2.7.1
- Windows 7(32位)
- IDLE 1.8
- PyQt4
- Qt Designer

1 个回答

6

试试看

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

想了解更多关于 getattr 的信息,可以查看 这里

撰写回答