我正在学习如何使用PyQt显示数据和表格。最终我想展示一个数据库的表格,但现在我只是在掌握一些基础知识。我使用Qt Designer创建了一个基本设置(如下所示),其中包含一组按钮(“创建”,“添加行”,“添加列”和“清除”)。 “创建”使用虚拟数据创建了一个虚拟表格。所有按钮都有效,除了“清除”按钮。当我点击它时,Python会完全崩溃,并且没有错误消息可以帮助我找出问题所在。
我的问题是:1)我做错了什么?2)我可以采取哪些异常处理方法来防止这种情况发生,以便在将来看到出了什么问题?
我的问题是: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_())
clear
和clearContents
两个函数(后者保留表头)。但很高兴听到有其他方法可行。 - user395760