최근 GUI 응용 프로그램을 만들기 위해 PyQt4를 사용하기 시작했습니다. QTableWidget을 사용하는 응용 프로그램을 만들려고했습니다. 그것은 2 열 테이블로 첫 번째 열은 QLineEdit로 설정되고 두 번째 열은 델리게이트를 사용하여 QListWidget으로 설정됩니다 ("설정"은 올바른 용어가 아닐 경우 미안합니다). QListWidget 열의 항목은 목록 출력에서 나옵니다 QFileDialogPyQt4에서 더블 클릭 QTableWidget이 내용을 -1로 설정합니다.
import sys
from PyQt4.QtGui import *
from PyQt4 import uic
from PyQt4.QtCore import *
qtCreatorFile = "app_name.ui" # UI File designed using QtDesigner
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class DelegateLEdit(QStyledItemDelegate):
def createEditor(self, parent, option, index):
line_edit = QLineEdit(parent)
return line_edit
class DelegateLWidget(QStyledItemDelegate):
def createEditor(self, parent, option, index):
list_widget = QListWidget(parent)
list_widget.setSelectionMode(QAbstractItemView.ExtendedSelection)
return list_widget
모든 것이 한 가지를 제외하고 잘 작동하는 것 같다의. 나는 QListWidget 열에서 셀을 클릭을 두 번 할 때마다, 특정 셀의 내용은 -1로 설정됩니다. 내가 처리하지 않은 " doubleClicked "신호를 사용합니다. 내가했을 때 (나는 그것을 텍스트 브라우저에서 셀의 내용을 인쇄하게 만들었습니다.) 셀을 두 번 클릭하면 내용을 -1로 설정할 수 있습니다. 아무도 도와 주실 수 있습니까? QTableWidget 설명서를 읽으려고했지만 어떤 성공을 찾지 못했습니다. 누군가 제가 누락 된 부분을 지적 해 주시겠습니까? 가 여기 내 Form 클래스의 초기화 기능입니다
def __init__(self):
QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.setWindowFlags(Qt.WindowMinimizeButtonHint)
self.list_widget = QListWidget()
self.add_button.clicked.connect(self.add_to_list)
# self.table.itemDoubleClicked.connect(self.print_cell_content)
self.table.setColumnCount(2)
first_header = "Option"
second_header = "Directories"
header = first_header + ";" + second_header
self.table.setHorizontalHeaderLabels(header.split(";"))
header = self.table.horizontalHeader()
header.setResizeMode(1, QHeaderView.ResizeToContents)
self.table.resizeColumnsToContents()
# self.table.setShowGrid(False)
self.delegate_lw = DelegateLWidget(self)
self.delegate_le = DelegateLEdit(self)
self.table.setItemDelegateForColumn(0, self.delegate_le)
self.table.setItemDelegateForColumn(1, self.delegate_lw)
편집 : 테이블의 두 번째 컬럼에 파일을 추가 추가 버튼 핸들러
def add_to_list(self):
file_dialog = QFileDialog(self)
file_dialog.saveState()
file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
file_list = file_dialog.getOpenFileNames()
self.dir_list.extend(file_list)
self.dir_list = list(set(self.dir_list))
self.add_items(self.dir_list)
def add_items(self, list_items):
list_items.sort()
column = 1
self.row_count = 0
for item in list_items:
self.table.insertRow(self.row_count)
self.table.setItem(self.row_count, column, QTableWidgetItem(item))
self.row_count += 1
는
편집 할 때. 그게 네가 정말로 원하는거야? 또는 실제로 언제든지 볼 수있는 항목 위젯을 설정 하시겠습니까? 셀을 더블 클릭 할 때 어떤 일이 발생할 것으로 예상됩니까? – eyllanesc
에 항목을 추가하는 방법을 보여 수 – ekhumoro
@ekhumoro 예, 실제로 편집 할 때 위젯을 표시하고 싶습니다. 문제는 목록 위젯에 item-delegate를 사용하고있는 두 번째 열에서 발생합니다. 해당 열의 셀을 두 번 클릭하면 해당 셀의 값이 -1로 다시 설정됩니다. 나는 그 것을 피하기를 희망하고있다 – 0Nicholas