2017-04-18 8 views
1

以下のコードで、行全体を追加/選択できます。編集ボタンを押すと、画面上の現在の行が印刷されます。テーブル行(1行のみ)を選択してセル内のコンテンツを編集

さらに、以前はすべての行が無効になっています。 現在の行を印刷する代わりに、選択した行を編集することができます。

# -*- coding: utf-8 -*- 
import sqlite3 as sql 
from PyQt4 import QtCore, QtGui 
import sys, os 

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     self.tabs = QtGui.QTabWidget(self) 
     self.general = QtGui.QWidget() 
     self.tabs.addTab(self.general, "General") 
     cWidget = QtGui.QWidget(self) 
     self.setCentralWidget(cWidget) 
     self.general_table = QtGui.QTableWidget(self.general) 
     self.setHeader() 

     add_record = QtGui.QPushButton("Add Record") 
     edit = QtGui.QPushButton("Edit") 
     layout = QtGui.QVBoxLayout(cWidget) 
     layout.addWidget(self.tabs) 
     layout.addWidget(add_record) 
     layout.addWidget(edit) 

     self.connect(add_record, QtCore.SIGNAL('clicked()'), self.addRecord) 
     self.connect(edit, QtCore.SIGNAL('clicked()'), self.edit) 

     self.general_table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) 

    def addRecord(self): 
     rcount_general = self.general_table.rowCount() 
     self.general_table.insertRow(rcount_general) 

    def edit(self): 
     indexes = self.general_table.selectionModel().selectedRows() 
     for index in sorted(indexes): 
      print("Row %d is selected" % index.row()) 


    def setHeader(self): 
     # General 
     self.general_table.setRowCount(1) 
     self.general_table.setColumnCount(3) 
     self.general_table.setHorizontalHeaderLabels(["A1", "A2", "A3"]) 

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    window = MainWindow() 
    window.show() 
    sys.exit(app.exec_()) 

答えて

0

あなたはアイテムのsetFlags機能を呼び出すことができます。編集可能の場合

  • :編集できないために

item = QtGui.QTableWidgetItem() 
item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) 
self.your_table.setItem(row, column, item) 

item = QtGui.QTableWidgetItem() 
item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable | 
       QtCore.Qt.ItemIsEnabled) 
self.your_table.setItem(row, column, item) 
+0

ちょうど私が必要なもの。あなたの努力のためのthx! – stepBystep

関連する問題