2017-04-18 87 views
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

相關問題