我創建了一個包含許多複選框的應用程序。每4個複選框位於groupBox_n
(n = 36)內,然後這些組框位於另一個組框中。從複製對象名稱的列表中調用對象
每個複選框都按照一定的規則命名,這對我來說非常方便。我想訪問他們每個人,但我不想每次輸入他們的名字。所以我儘管關於在列表中重現他們的名字,以便我可以遍歷列表並控制,取決於他們的名字。
但是,當我嘗試連接一個按鈕,從我的列表中調用一個字符串,我無法做到這一點。這裏我用QLineEdit重現了一個例子。
是否有可能做這樣的事情?
調用findChildren
不能幫助我,因爲那時我不知道我的checkBox在我的應用程序中的位置或「誰是誰」在那裏。通過ObjectName調用也是不可能的,是嗎?
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.gridLayout = QtGui.QGridLayout(Form)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.My_lineEdit = QtGui.QLineEdit(Form)
self.My_lineEdit.setObjectName(_fromUtf8("My_lineEdit"))
self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
MyStrinng = 'My_lineEdit'
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.Mystring.clear)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
這樣,PyQt
不承認我的字符串作爲對象的名稱。我也試圖使PyQt
字符串QCore.QString('My_lineEdit')
,但QString
不適用於我的版本(you can see here)
這個我可以重現我所有的複選框的名稱。
names = []
for x in range(0, 6):
for y in range(0, 6):
for z in range(1, 5):
Names = 's'+str(x)+str(y)+'0'+str(z)
names.append(Names)
print(names)
你想讓你的objectName的每個複選框? – eyllanesc
當我得到一個列表時,哪個框是重要的。 我不知道我可以在搜索中指定名稱。謝謝! 你認爲我能以某種方式將它與我創建的名稱列表進行比較嗎?類似於Mylist中的名稱:myList = parentWidget.findChild(QPushButton,「name」)' –
是的,如果可以的話,但更好地解釋自己。根據你的問題你有一個名稱模式,你可以爲你想要的東西放置一個有效的例子。 – eyllanesc