Maison  >  Questions et réponses  >  le corps du texte

python - pyqt ne peut pas afficher le contenu de la fenêtre lors de l'appel de la fenêtre tablewidget

Je voudrais demander à tout le monde, je veux cliquer sur un bouton dans la fenêtre principale pour appeler une nouvelle fenêtre. Cette fenêtre est un tableauwidget. Actuellement, une fenêtre contextuelle peut être implémentée, mais le tableau ne peut pas être affiché et il y en a. seulement une fenêtre vide. Je n'arrive vraiment pas à trouver la raison, donnez-moi s'il vous plaît quelques conseils.
C'est le code de la fenêtre principale

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'question.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(344, 244)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(110, 80, 121, 61))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 344, 23))
        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))
        self.pushButton.setText(_translate("MainWindow", "Push", None))

C'est le code de la fenêtre appelé

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'qtable.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_MainTable(QtGui.QWidget):
    def setupUi(self, Table):
        Table.setObjectName(_fromUtf8("Table"))
        Table.resize(422, 196)
        self.centralwidget = QtGui.QWidget(Table)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.tableWidget = QtGui.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(0, 0, 421, 171))
        self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setRowCount(4)
        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.setVerticalHeaderItem(3, 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)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        Table.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(Table)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 422, 23))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        Table.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(Table)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        Table.setStatusBar(self.statusbar)

        self.retranslateUi(Table)
        QtCore.QMetaObject.connectSlotsByName(Table)

    def retranslateUi(self, Table):
        Table.setWindowTitle(_translate("Table", "Table", None))
        item = self.tableWidget.verticalHeaderItem(0)
        item.setText(_translate("Table", "1", None))
        item = self.tableWidget.verticalHeaderItem(1)
        item.setText(_translate("Table", "2", None))
        item = self.tableWidget.verticalHeaderItem(2)
        item.setText(_translate("Table", "3", None))
        item = self.tableWidget.verticalHeaderItem(3)
        item.setText(_translate("Table", "4", None))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Table", "新建列", None))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Table", "新建列", None))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Table", "新建列", None))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Table", "新建列", None))

C'est le programme principal

from ui_question import Ui_MainWindow
from PyQt4 import QtGui
from PyQt4.QtCore import QCoreApplication
from PyQt4.QtCore import * 
import os,sys,subprocess,re
from ui_qtable import Ui_MainTable

class myui(QtGui.QMainWindow,Ui_MainWindow,Ui_MainTable):

    def __init__(self, MainWindow):
#        QtGui.QMainWindow.__init__(self)
        super(my2d,self).__init__()
        self.setupUi(MainWindow)

        self.pushButton.clicked.connect(self.createMaterialFunc)

    def createMaterialFunc(self):
        print 'OK'
        self.another = Ui_MainTable()
        self.another.show() 


    
        
if __name__ ==  "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = myui(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())                                    

Les résultats en cours sont les suivants :


Merci à tous ! ! Désolé de déranger tout le monde ! !

ringa_leeringa_lee2702 Il y a quelques jours789

répondre à tous(1)je répondrai

  • phpcn_u1582

    phpcn_u15822017-05-27 17:41:25

    La fonction createMaterialFunc() dans la ligne 17 du programme principal est modifiée comme suit :

        def createMaterialFunc(self):
            self.another = Ui_MainTable()
            self.table = QtGui.QMainWindow()
            self.another.setupUi(self.table)
            self.table.show()

    Résultat du run :

    répondre
    0
  • Annulerrépondre