python - pyqt cannot display window content when calling tablewidget window
ringa_lee
ringa_lee 2017-05-27 17:39:25
0
1
823

I want to ask everyone, I want to click a button in the main window to call a new window. This window is a tablewidget. Currently, a pop-up window can be implemented, but the table cannot be displayed, and there is only a blank window. I really can't find the reason, please give me some advice.
This is the main window code

# -*- 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))

This is the window code being called

# -*- 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))

This is the main program

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_())                                    

The running results are as follows:


Thank you all very much! ! Sorry to bother everyone! !

ringa_lee
ringa_lee

ringa_lee

reply all(1)
phpcn_u1582

The createMaterialFunc() function in line 17 of the main program is changed to the following:

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

Run results:

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template