在python的对象名称中使用变量

时间:2019-01-11 19:40:36

标签: python pyqt

我想在对象名称中使用变量。要设置Qlabel小部件,我通常会这样做

self.label1.setText('label 1')
self.label2.setText('label 2')

我要使用:

x = 1
y = 2

self.label(x).setText('label 1')
self.label(y).setText('label 2')

我尝试过

name = ('self.label%d' % x)
name.setText('label 1')

(self.label+str(x)).setText('label 1')

我也尝试过使用列表,但似乎无法使其正常工作。有什么建议吗?

这里是完整代码(使用qt Designer,因此我导入了.ui / .py文件:

from PyQt4 import QtGui, QtCore, QtTest
import pandas as pd
import sys

import mainWin



class mainWin(QtGui.QMainWindow,mainWin.Ui_MainWindow):
    def __init__(self):
        super(self.__class__, self).__init__()
        self.setupUi(self)
        num = len(cat)
        x = 1
        y = 2
        self.drink_label(x).setText('label 1')

def main():
    app = QtGui.QApplication(sys.argv)
    form  = mainWin()

    form.show()
    sys.exit(app.exec_())

if __name__== '__main__':
   main()

1 个答案:

答案 0 :(得分:0)

可能最好的方法是先列出Qlabel,然后按以下方式访问它们:

self.labels[x].setText('label 1')

也可以像这样使用getattr:

getattr(self, "label" + x).setText('label 1')

否则,您可以使用eval,但是实际上不建议使用eval来解决安全问题,并且会使代码更加混乱:

eval("self.label(" + x + ").setText('label 2')")