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 ! !
La fonction createMaterialFunc() dans la ligne 17 du programme principal est modifiée comme suit :
Résultat du run :