我想在对象名称中使用变量。要设置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()
答案 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')")