2 개 열을 2 개 목록의 문자열로 채우려 고합니다. 1 열에는 목록 1의 문자열이 있어야하고 2 열에는 목록 2의 문자열이 있어야합니다. 해당 열의 earch 행에 대해 "추가"버튼을 원했지만 시도했지만 작동하지 않습니다 ...
다음은 내 코드입니다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui
class Example(QtGui.QDialog):
def __init__(self):
super(Example, self).__init__()
self.resize(700, 400)
self.setWindowTitle("example of what i'm trying to do")
self.setWindowFlags(QtCore.Qt.Window)
self.searchEditText = QtGui.QLineEdit()
self.searchEditText.setPlaceholderText("ignore this")
self.searchEditText.setMaximumWidth(200)
self.searchbutton = QtGui.QPushButton()
self.searchbutton.setText("start")
self.searchbutton.setMaximumWidth(100)
self.isWrittenTo = False
self.table = QtGui.QTableWidget()
self.configureTable(self.table)
self.searchbutton.clicked.connect(lambda: self.start(self.table))
self.table.verticalHeader().hide()
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.addWidget(self.searchEditText)
self.horizontalLayout.addWidget(self.searchbutton)
self.horizontalLayout.setAlignment(QtCore.Qt.AlignRight)
self.verticalLayout = QtGui.QVBoxLayout(self)
self.verticalLayout.addLayout(self.horizontalLayout)
self.verticalLayout.addWidget(self.table)
def configureTable(self, table):
table.setColumnCount(4)
table.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("1st col"))
table.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("2nd col"))
table.setHorizontalHeaderItem(2, QtGui.QTableWidgetItem("3rd col"))
table.setHorizontalHeaderItem(3, QtGui.QTableWidgetItem("4th col"))
header = table.horizontalHeader()
header.setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
header.setResizeMode(2, QtGui.QHeaderView.ResizeToContents)
table.horizontalHeader().setStretchLastSection(True)
table.setRowCount(5)
def start(self, table):
list_a = ["a is first letter", "b is second letter","c is third letter"]
list_b = ["e4", "f5", "g6"]
i = 0
j = 0
item1 = QtGui.QTableWidgetItem()
item2 = QtGui.QTableWidgetItem()
button1 = QtGui.QPushButton()
button1.setText("add")
button1.clicked.connect(self.add)
for x in list_a:
item1.setText(x)
table.setItem(i, 0, item1)
i += 1
for z in list_b:
item2.setText(z)
table.setItem(j, 1, item2)
table.setCellWidget(j, 2, button1)
j += 1
def codeName(self):
return "codename"
def add(self):
print "added"
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
about = Example()
about.show()
sys.exit(app.exec_())
문제는 당신의 start
방법에 있습니다. 당신은 위젯을 초기화 할 필요가 item1
, item2
그리고 button1
에서 각각 의 반복 for
루프, 다른 사람은 테이블의 모든 행에 매우 동일한 위젯을 배치하려고합니다. 또한 lists
길이가 같으면 두 개의 for
루프 가 필요하지 않습니다 (단지 코드 개선). 다음은 수정 (및 작동) start
방법입니다.
def start(self, table):
list_a = ["a is first letter", "b is second letter","c is third letter"]
list_b = ["e4", "f5", "g6"]
for i in range(len(list_a)):
item1 = QtGui.QTableWidgetItem()
item1.setText(list_a[i])
table.setItem(i, 0, item1)
button1 = QtGui.QPushButton()
button1.setText("add")
button1.clicked.connect(self.add)
item2 = QtGui.QTableWidgetItem()
item2.setText(list_b[i])
table.setItem(i, 1, item2)
table.setCellWidget(i, 2, button1)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다