2017-09-17 4 views
0

나는 새 Window를 열고 싶은 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_()) 

내가 내 MainWindow를 추가 다음과 같은 지침

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

그러나 단추 2를 누른 후 programm에 더와 충돌하지 않습니다 주어진 오류 ...

,

프로세스 종료 코드 1

+0

무엇이'MainWindow'입니까? – eyllanesc

+0

내가 –

+0

함께 시도에 Button @eyllanesc을 내 MainWindow를 평 파일은'데프 (자신을) create_new_window : tableWindow 수입 Ui_MainWindow의 UI = Ui_MainWindow() self.tableWindow = QMainWindow() ui.setupUi (self.tableWindow) 자체에서 을 .tableWindow.show()' – eyllanesc

답변

0

eyllanesc 당신이 그것을 사용하기 전에 QMainWindow를 가져 오지 않았기 때문에 아마 말합니다으로 완료. 그러나 그때조차도, "객체"를 서브 클래 싱하는 자신 만의 창을 만들기에는 너무 많은 일을하고있는 것처럼 느껴집니다. QMainWindow를 서브 클래 싱 (subclassing)하는 것이 훨씬 쉬울 것입니다 (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_()) 

:

이 작은 예를보십시오.