我正在學習如何使用PyQt顯示數據和表格。最終,我希望有一個表格顯示數據庫的內容,但現在我只是掌握一些基礎知識。我有一個基本的設置(下面粘貼)使用Qt設計器與一組按鈕(「創建」,「添加行」,「添加列」和「清除」)。 「創建」使假裝數據生成一個虛擬表。除了「清除」按鈕,所有按鈕都可以工作,當我點擊它時,Python完全崩潰,並且我沒有任何錯誤消息來開始排除錯誤。在PyQt中清除表格視圖
我的問題是:1)我在做什麼錯了? 2)我能以異常處理的形式做什麼來防止這種情況發生,所以我可以看到未來會出現什麼問題?
import sys
from sqlite3 import *
from PyQt4 import QtCore, QtGui, QtSql
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from test_class import Ui_MainWindow
class StartQT4(QtGui.QMainWindow, QTableWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.createbutton,QtCore.SIGNAL("clicked()"),self.file_dialog)
QtCore.QObject.connect(self.ui.addrowbutton,QtCore.SIGNAL("clicked()"),self.add_row)
QtCore.QObject.connect(self.ui.addcollumnbutton,QtCore.SIGNAL("clicked()"),self.add_column)
QtCore.QObject.connect(self.ui.clearbutton,QtCore.SIGNAL("clicked()"),self.clear_table)
def add_row(self):
self.ui.tableWidget.insertRow (0)
def add_column(self):
self.ui.tableWidget.insertColumn (0)
def clear_table(self):
#This bit that won't seem to work in any combination!
#self.ui.tableWidget.clearContents()
self.ui.tableWidget.clear()
#self.ui.tableWidget.setColumnCount(0)
#self.ui.tableWidget.setRowCount(0)
def file_dialog(self):
self.ui.textEdit.setText("Testing testing")
self.ui.tableWidget.setColumnCount(3)
self.ui.tableWidget.setRowCount(3)
a = QTableWidgetItem("A")
self.ui.tableWidget.setHorizontalHeaderItem (0, a)
a = QTableWidgetItem("B")
self.ui.tableWidget.setHorizontalHeaderItem (1, a)
self.ui.tableWidget.setHorizontalHeaderItem (2, a)
b = QTableWidgetItem("Test")
self.ui.tableWidget.setItem(1,1,b)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = StartQT4()
myapp.show()
sys.exit(app.exec_())
啊,我意識到我在使用tableWidget,而不是tableView,我的錯誤!目前我一直在研究tableWidget,因爲我似乎無法找到任何實際運行的tableView的在線實例。 我遇到的怪異行爲是Windows簡單地說「python.exe已停止工作」,並強制程序退出。還有什麼我可以嘗試讓它與tableWidget一起工作? – belometer 2010-08-22 21:44:22
實際上,我已經用QSql模型對它進行了整理,這正是我最後的結果。感謝您的幫助,但您指出我正確的方向,最終完成整理! – belometer 2010-08-22 22:43:57
仍然很奇怪...... QTableWidget知道'clear'和'clearContents'(後者將標題留在原地)。但很高興聽到別的作品。 – delnan 2010-08-23 10:41:59