是否可以將參數傳遞給PyQt4信號連接?在我來說,我有ň按鈕與一組相同的菜單界面上dinamically創建的,這取決於用戶的輸入:將參數傳遞給PyQt信號連接
for j in range(0, len(self.InputList)):
arrow = QtGui.QPushButton(Form)
arrow.setGeometry(QtCore.QRect(350, 40*(j+3)+15, 19, 23))
menu = QtGui.QMenu(Form)
for element in SomeList:
cb = QtGui.QRadioButton(element,menu)
ca = QtGui.QWidgetAction(menu)
ca.setDefaultWidget(cb)
QtCore.QObject.connect(cb,QtCore.SIGNAL("stateChanged(int)"),self.SomeFunction)
arrow.setMenu(menu)
雖然菜單是所有的按鈕進入界面相同,用戶應能夠從任何按鈕中選擇一個值,並且對於其中的任何一個,操作都是相同的(「將所選值添加到線條編輯」),唯一的區別在於線條編輯可能也是1st作爲第二,第第3。
我想什麼要問的話,就是如果有任何的方式來傳遞參數Ĵ這裏:
QtCore.QObject.connect(cb,QtCore.SIGNAL("stateChanged(int)"),self.SomeFunction(j))
例:
在此執行用戶的輸入是3 ,所以我將有3行編輯和三個按鈕與相同的菜單:
Line Edit 1:
Line Edit 2:
Line Edit 3:
使用相同的功能SomeFunction
,我想編輯線條編輯的值。因此,如果用戶觸摸連接到2號線編輯菜單,功能SomeFunction
應與參數2 SomeFunction(2)
被調用,因此同樣的方法瞭解自己這行編輯是正確的:
Line Edit 1:
Line Edit 2: modified
Line Edit 3:
我需要這樣做是因爲主窗口上的行編輯數量取決於用戶選擇的內容。我是一個新手,到目前爲止,我一直爲GUI中的任何對象創建一個函數,但這次數字是動態的,我相信有一些更優雅的方法來創建這種信號連接,我儘管離我的文件閱讀還有些差距。
我認爲我們非常接近解決方案。對不起,我是一個新手,但在實現你的解決方案後,我可以將這個元素傳遞給函數:'print action.data()' - >''。我如何檢索我附加到菜單的字符串值'element',如'action.text()'? –
我這樣問,因爲當調試腳本時,我沒有看到任何字符串文本到對象'action'中。假設我有'SomeList = ['option1','option2','option3']',我需要的是當按鈕的動作'option2'被按下時,相應的行編輯應該獲得值'option2'。所以我想到的是定義'SomeFunction'來將行編輯的'text()'設置爲'option2',並且傳遞參數的原因是要傳遞一個軟件窗戶是正確的。 –
不要緊,這是一個愚蠢的拼寫錯誤('.Text()'而不是'.text()'),我認爲這是一個缺失的屬性。你的解決方案使用'action.text()'非常有效,非常感謝! –