나는 comboBoxes와 lineEdits로 가득 찬 tablewidget을 가지고 있으며 comboBox에서 선택한 선택 항목을 가져 오는 방법을 찾고 싶습니다. tableWidget.Any 아이디어의 다른 comboBox에서 사용 가능한 선택 항목에 영향을 줍니까?PyQT의 tableWidget에서 두 위젯을 어떻게 연결합니까?
0
A
답변
0
import sys
from PyQt4 import QtGui, QtCore
class mainWin(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.di = {"name":["raton", "kamal", "sujon"], "age":["45","21","78"]}
lay = QtGui.QGridLayout(self)
self.combo1=QtGui.QComboBox()
self.combo2=QtGui.QComboBox()
lay.addWidget(self.combo1, 0, 0)
lay.addWidget(self.combo2, 0, 1)
self.combo1.addItems(["name", "age"])
self.combo2.addItems(self.di["name"])
self.connect(self.combo1, QtCore.SIGNAL("currentIndexChanged (const QString&)"),
self.changeCombo)
def changeCombo(self, ind):
self.combo2.clear()
self.combo2.addItems(self.di[ind])
def main():
app = QtGui.QApplication(sys.argv)
win = mainWin()
win.show()
sys.exit(app.exec_())
main()
0
당신이 동적으로 만들 필요가있는 경우에, "내가 얘기를 깜빡 했네요은 버튼을 누를 때 테이블의 각 행에서 위젯을 만든 것입니다"당신은 그들을 식별 할 수 있어야합니다 (적어도 첫 번째).
내가 QComboBox
클래스 다시 구현 한 - MyComboBox
을, 그래서 그 중 하나가 변경 될 때 식별자 (행 번호)가 포함 신호 firstColumnComboBoxChanged
어떤 ("이름"또는 "나이") 선택을 방출합니다. 이 신호는 mainWin
클래스에서 changeSecondCombo
메서드를 활성화합니다. 여기서 두 번째 열의 comboBox가 변경됩니다.
이 코드를 실행하십시오. "행 추가"버튼을 클릭하면 몇 개의 행을 추가 할 수 있습니다. 첫 번째 열에서 comboBox를 변경하십시오.
import sys
from PyQt4 import QtGui, QtCore
class myComboBox(QtGui.QComboBox):
def __init__(self, comboID, mainForm):
super(myComboBox, self).__init__()
self.__comboID = comboID
self.__mainForm = mainForm
self.connect(self, QtCore.SIGNAL("currentIndexChanged (const QString&)"), self.indexChanged)
def indexChanged(self, ind):
# send signal to MainForm class, self.__comboID is actually row number, ind is what is selected
self.__mainForm.emit(QtCore.SIGNAL("firstColumnComboBoxChanged(PyQt_PyObject,PyQt_PyObject)"), self.__comboID, ind)
class mainWin(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.di = {"name":["raton", "kamal", "sujon"], "age":["45","21","78"]}
lay = QtGui.QGridLayout(self)
#create tableWidget and pushButton
self.tableWidget = QtGui.QTableWidget()
self.tableWidget.setColumnCount(2)
self.pushButton = QtGui.QPushButton()
self.pushButton.setText("Add row")
lay.addWidget(self.tableWidget, 0, 0)
lay.addWidget(self.pushButton, 1, 0)
self.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.addRow)
# Custom signal
self.connect(self, QtCore.SIGNAL("firstColumnComboBoxChanged(PyQt_PyObject, PyQt_PyObject)"), self.changeSecondCombo)
def addRow(self):
rowNumber = self.tableWidget.rowCount()
self.tableWidget.insertRow(rowNumber)
combo1=myComboBox(rowNumber, self)
combo2=QtGui.QComboBox()
combo1.addItems(["name", "age"])
combo2.addItems(self.di["name"])
self.tableWidget.setCellWidget(rowNumber, 0, combo1)
self.tableWidget.setCellWidget(rowNumber, 1, combo2)
def changeSecondCombo(self, row, ind):
combo2 = self.tableWidget.cellWidget(row, 1)
if combo2:
combo2.clear()
combo2.addItems(self.di["%s"%(ind)])
def main():
app = QtGui.QApplication(sys.argv)
form = mainWin()
form.show()
app.exec_()
if __name__ == '__main__':
main()
+0
코드에 대한 자세한 내용이 필요하면 문제가 해결 될 경우 대답을 수락하십시오. 언제든지 물어보십시오. – Aleksandar
관련 문제
- 1. PyQt의 tablewidget에서 위젯 행을 얻으려면 어떻게해야합니까?
- 2. facebook은 타사 위젯을 연결합니까?
- 3. Pyqt의 함수를 사용하여 tablewidget에서 특정 행을 클릭하는 방법?
- 4. 두 모듈을 어떻게 연결합니까?
- 5. 동적으로 생성 된 위젯을 PyQt의 신호에 어떻게 바인딩합니까?
- 6. 두 개의 Snoc리스트를 어떻게 연결합니까?
- 7. 녹에서 두 조각을 어떻게 연결합니까?
- 8. Drupal에서 두 분류를 어떻게 연결합니까?
- 9. 두 ViewController간에 배열을 어떻게 연결합니까?
- 10. node.js와 레일에서 두 개의 앱을 어떻게 연결합니까?
- 11. 어떻게 목표 C에서 두 개의 이미지를 연결합니까?
- 12. 두 요소를 jquery와 어떻게 연관 시키거나 연결합니까?
- 13. PHP에서 두 개의 데이터베이스 필드를 어떻게 연결합니까?
- 14. 어떻게 두 개의 에뮬레이터를 LAN 네트워크에 연결합니까?
- 15. Python OpenCV에서 두 행렬을 어떻게 연결합니까?
- 16. PyQt의 조이스틱과 같은 것
- 17. PyCht를 PyQt4에 어떻게 연결합니까?
- 18. xmlCIM에서 인스턴스를 어떻게 연결합니까?
- 19. C에서 문자열을 어떻게 연결합니까?
- 20. Tablewidget에서 항목을 두 번 클릭하여 QLinEdit 텍스트 선택
- 21. PyQt의 이미지 인쇄 오류
- 22. XML을 XSD에 어떻게 연결합니까?
- 23. DB에 어떻게 연결합니까?
- 24. QProgressBar를 함수와 어떻게 연결합니까?
- 25. ActiveRecord는 레코드를 어떻게 연결합니까?
- 26. Java로 서버에 어떻게 연결합니까?
- 27. ES6 모듈을 어떻게 연결합니까?
- 28. NSIS에서 문자열을 어떻게 연결합니까?
- 29. 백본 모델을보기에 어떻게 연결합니까?
- 30. 파이썬에서 파일을 어떻게 연결합니까?
내가 언급 한 것을 잊었던 것은 버튼을 누르면 테이블의 각 행에있는 위젯이 만들어 졌다는 것입니다. – GiannisIordanou