代码之家  ›  专栏  ›  技术社区  ›  Sahil Jain

在pyqt中应用单击的表头

  •  1
  • Sahil Jain  · 技术社区  · 8 年前

    这是我的调用者文件,它帮助我生成表的ui,我可以在其中写入数据。这里的问题是,当我根据该列单击表的标题时,我想对数据进行排序。我可以很容易地对数据进行排序,因为我有一个后端数据(由于这里不需要它,所以此代码中不存在),但我无法在表的标题上应用click函数。我想申请点击。连接到不同的表头。提前感谢:)

    from table import *
    from PyQt4 import QtGui # Import the PyQt4 module we'll need
    import sys # We need sys so that we can pass argv to QApplication
    import os
    
    from PyQt4.QtGui import *
    from PyQt4.QtCore import *
    
    
    class MainWindow(QMainWindow,Ui_MainWindow):
        def __init__(self, parent=None):
            QMainWindow.__init__(self, parent)
            self.setupUi(self)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        w = MainWindow()
        w.show()
        sys.exit(app.exec_())
    

    这是我的桌子。py具有ui代码:

    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'table.ui'
    #
    # Created by: PyQt4 UI code generator 4.11.4
    #
    # WARNING! All changes made in this file will be lost!
    
    from PyQt4 import QtCore, QtGui
    
    try:
        _fromUtf8 = QtCore.QString.fromUtf8
    except AttributeError:
        def _fromUtf8(s):
            return s
    
    try:
        _encoding = QtGui.QApplication.UnicodeUTF8
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig, _encoding)
    except AttributeError:
        def _translate(context, text, disambig):
            return QtGui.QApplication.translate(context, text, disambig)
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName(_fromUtf8("MainWindow"))
            MainWindow.resize(800, 600)
            self.centralwidget = QtGui.QWidget(MainWindow)
            self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
            self.gridLayout = QtGui.QGridLayout(self.centralwidget)
            self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
            self.tableWidget = QtGui.QTableWidget(self.centralwidget)
            self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
            self.tableWidget.setColumnCount(3)
            self.tableWidget.setRowCount(3)
            item = QtGui.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(0, item)
            item = QtGui.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(1, item)
            item = QtGui.QTableWidgetItem()
            self.tableWidget.setVerticalHeaderItem(2, item)
            item = QtGui.QTableWidgetItem()
            self.tableWidget.setHorizontalHeaderItem(0, item)
            item = QtGui.QTableWidgetItem()
            self.tableWidget.setHorizontalHeaderItem(1, item)
            item = QtGui.QTableWidgetItem()
            self.tableWidget.setHorizontalHeaderItem(2, item)
            self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1)
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtGui.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 31))
            self.menubar.setObjectName(_fromUtf8("menubar"))
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtGui.QStatusBar(MainWindow)
            self.statusbar.setObjectName(_fromUtf8("statusbar"))
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
            item = self.tableWidget.verticalHeaderItem(0)
            item.setText(_translate("MainWindow", "New Row", None))
            item = self.tableWidget.verticalHeaderItem(1)
            item.setText(_translate("MainWindow", "New Row", None))
            item = self.tableWidget.verticalHeaderItem(2)
            item.setText(_translate("MainWindow", "New Row", None))
            item = self.tableWidget.horizontalHeaderItem(0)
            item.setText(_translate("MainWindow", "Name", None))
            item = self.tableWidget.horizontalHeaderItem(1)
            item.setText(_translate("MainWindow", "class", None))
            item = self.tableWidget.horizontalHeaderItem(2)
            item.setText(_translate("MainWindow", "marks", None))
    
    
    if __name__ == "__main__":
        import sys
        app = QtGui.QApplication(sys.argv)
        MainWindow = QtGui.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Sahil Jain    8 年前
    self.connect(self.tableWidget.horizontalHeader(),SIGNAL("sectionClicked(int)"),self.fun)
    
    def fun(self,i):
        print("index clicked is"+i)