2017-09-17 7 views
0

私は新しいウィンドウを開きたいMainWindowを持っています。Pyqt 5新しいウィンドウがクラッシュMainwindow

新しいウィンドウ:

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

# Form implementation generated from reading ui file 'C:\Users\Tareq\Desktop\table.ui' 
# 
# Created by: PyQt5 UI code generator 5.6 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName("MainWindow") 
     MainWindow.resize(703, 449) 
     self.centralwidget = QtWidgets.QWidget(MainWindow) 
     self.centralwidget.setObjectName("centralwidget") 
     self.tableWidget = QtWidgets.QTableWidget(self.centralwidget) 
     self.tableWidget.setGeometry(QtCore.QRect(0, 0, 701, 401)) 
     self.tableWidget.setRowCount(48) 
     self.tableWidget.setColumnCount(4) 
     self.tableWidget.setObjectName("tableWidget") 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.menubar = QtWidgets.QMenuBar(MainWindow) 
     self.menubar.setGeometry(QtCore.QRect(0, 0, 703, 21)) 
     self.menubar.setObjectName("menubar") 
     MainWindow.setMenuBar(self.menubar) 
     self.statusbar = QtWidgets.QStatusBar(MainWindow) 
     self.statusbar.setObjectName("statusbar") 
     MainWindow.setStatusBar(self.statusbar) 

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

    def retranslateUi(self, MainWindow): 
     _translate = QtCore.QCoreApplication.translate 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 


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

私が指示

self.pushButton_2.clicked.connect(self.create_new_window) 

と、以下の機能を以下の私のメインウィンドウに追加:

def create_new_window(self): 
    from tableWindow import Ui_MainWindow 
    self.tableWindow = Ui_MainWindow 
    self.tableWinow.show() 

しかし、のprogrammはなしでクラッシュボタン2を押した後与えられたエラー...

プロセスは終了コード1

+0

「MainWindow」とは何ですか? – eyllanesc

+0

私はボタン@eyllanesc –

+0

をして試してみる私のメイン・ウィンドウPYファイル: 'DEF(自己)create_new_window: tableWindow輸入Ui_MainWindowのUI = Ui_MainWindow() self.tableWindow = QMainWindow()ui.setupUi(self.tableWindow)自己からは、 .tableWindow.show() ' – eyllanesc

答えて

0

eyllanescは、あなたがそれを使用する前にQMainWindowをインポートしていないので、それはおそらく言うように仕上げました。しかし、それでも、 "オブジェクト"をサブクラス化する独自のウィンドウを作成するにはあまりにも多くのことをしているように感じます。 QMainWindowをサブクラス化して、それを大げさにするのはずっと簡単です(よりPython的ですか?)。それはちょうど、プッシュボタンでから別のウィンドウが開きます

import sys 
from PyQt5 import QtCore, QtWidgets 
from PyQt5.QtWidgets import * 

class Second(QtWidgets.QMainWindow): 
    def __init__(self, parent=None): 
     super(Second, self).__init__(parent) 
     #Setting a title, locating and sizing the window 
     self.title = 'My Second Window' 
     self.left = 200 
     self.top = 200 
     self.width = 500 
     self.height = 500 
     self.setWindowTitle(self.title) 
     self.setGeometry(self.left, self.top, self.width, self.height) 
     self.pushButton = QtWidgets.QPushButton("Close Me", self) 
     self.pushButton.clicked.connect(self.on_pushButton_clicked) 
     self.pushButton.move(120,120) 

    def on_pushButton_clicked(self): 
     self.close() 

class First(QtWidgets.QMainWindow): 
    def __init__(self, parent=None): 
     super(First, self).__init__(parent) 
     self.title = 'My First Window' 
     self.left = 100 
     self.top = 100 
     self.width = 500 
     self.height = 500 
     self.setWindowTitle(self.title) 
     self.setGeometry(self.left, self.top, self.width, self.height) 
     self.pushButton = QtWidgets.QPushButton("Open Me", self) 
     self.pushButton.move(120,120) 
     self.pushButton.clicked.connect(self.on_pushButton_clicked)  
     self.newWindow = Second(self) 

    def on_pushButton_clicked(self): 
     self.newWindow.show() 

app = QtWidgets.QApplication(sys.argv) 
main = First() 
main.show() 
sys.exit(app.exec_()) 

は、この小さな例を試してみてください。

関連する問題