2017-07-17 664 views
1

我创建两个窗口如何在pyqt的单个窗口中打开多个页面?

第一窗口
from PyQt5 import QtCore, QtGui, QtWidgets 
from dial import Ui_dial 
from chat import Ui_Chat 

class Ui_Form(object): 

def setupUi(self, Form): 
    Form.setObjectName("Form") 
    Form.resize(764, 719) 
    font = QtGui.QFont() 
    font.setKerning(False) 
    Form.setFont(font) 
    Form.setStyleSheet() 
self.call_button = QtWidgets.QPushButton(Form) 
    self.call_button.setGeometry(QtCore.QRect(320, 500, 111, 71)) 
    font = QtGui.QFont() 
    font.setFamily("Times New Roman") 
    font.setPointSize(10) 
    font.setBold(True) 
    font.setWeight(75) 
    self.call_button.setFont(font) 
    self.call_button.setStyleSheet("") 
    self.call_button.setText("") 
    icon2 = QtGui.QIcon() 
    icon2.addPixmap(QtGui.QPixmap(":/images/Images/call.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
    self.call_button.setIcon(icon2) 
    self.call_button.setIconSize(QtCore.QSize(58, 58)) 
    self.call_button.setCheckable(True) 
    self.call_button.setAutoExclusive(True) 
    self.call_button.setObjectName("call_button") 
    self.call_button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Space)) 
    self.call_button.clicked.connect(self.dialwindow) 
self.ilabel = QtWidgets.QLabel(Form) 
    self.ilabel.setGeometry(QtCore.QRect(210, 60, 331, 191)) 
    font = QtGui.QFont() 
    font.setFamily("Sylfaen") 
    font.setPointSize(18) 
    self.ilabel.setFont(font) 
    self.ilabel.setStyleSheet("background-image: url(:/images/Images/label_back1.jpg);") 
    self.ilabel.setObjectName("ilabel") 
self.retranslateUi(Form) 
    QtCore.QMetaObject.connectSlotsByName(Form) 

def retranslateUi(self, Form): 
    _translate = QtCore.QCoreApplication.translate 
    Form.setWindowTitle(_translate("Form", "Form")) 
import icons_rc 


if __name__ == "__main__": 
import sys 
app = QtWidgets.QApplication(sys.argv) 
Form = QtWidgets.QDialog() 
ui = Ui_Form() 
ui.setupUi(Form) 
Form.show() 
sys.exit(app.exec_()) 
第二个窗口
from PyQt5 import QtCore, QtGui, QtWidgets 
import dial_rc 

class Ui_dial(object): 

def setupUi(self, dial): 
    dial.setObjectName("dial") 
    dial.resize(739, 712) 
    dial.setStyleSheet() 
self.dialpage_label = QtWidgets.QLabel(dial) 
    self.dialpage_label.setGeometry(QtCore.QRect(240, 120, 301, 511)) 
    self.dialpage_label.setObjectName("dialpage_label") 
    self.callend_button = QtWidgets.QPushButton(dial) 
    self.callend_button.setGeometry(QtCore.QRect(340, 520, 91, 71)) 
    self.callend_button.setText("") 
    icon = QtGui.QIcon() 
    icon.addPixmap(QtGui.QPixmap(":/images/Images/end.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
    self.callend_button.setIcon(icon) 
    self.callend_button.setIconSize(QtCore.QSize(45, 45)) 
    self.callend_button.setObjectName("callend_button") 
    self.callend_button.clicked.connect(self.endcall) 
def retranslateUi(self, dial): 
    _translate = QtCore.QCoreApplication.translate 
    dial.setWindowTitle(_translate("dial", "Dialog")) 
if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    dial = QtWidgets.QDialog() 
    ui = Ui_dial() 
    ui.setupUi(dial) 
    dial.show() 
    sys.exit(app.exec_()) 

如何显示在单一窗口?当点击按钮新窗口打开此不同的窗口,所以我想表明,当我点击在第二个窗口在同一屏幕上打开的按钮上。因此,我需要关于此问题的专业知识

回答

0

首先修改您的python脚本,以便类从QtWidgets.QMainWindow继承

class Ui_Form(QtWidgets.Qdialog): 

然后写一个初始化功能,使您的类实例化,即对象可以被创建。一旦完成,您可以查看QtWidgets.QDialog()对象,该对象将通过脚本中的名称转盘传递给您的setupUI()。然后用自己替换传递的这个对象。

总的来说你的代码看起来像这样。

class Ui_dial(QtWidgets.Qdialog): 

def __init__(self): 
    super().__init__()//inheriting from the object. 
def setupUi(self, dial): 
    self.setObjectName("dial") 
    self.resize(739, 712) 
    self.setStyleSheet() 
    self.dialpage_label = QtWidgets.QLabel(dial) 
    self.dialpage_label.setGeometry(QtCore.QRect(240, 120, 301, 511)) 
    self.dialpage_label.setObjectName("dialpage_label") 
    self.callend_button = QtWidgets.QPushButton(dial) 
    self.callend_button.setGeometry(QtCore.QRect(340, 520, 91, 71)) 
    self.callend_button.setText("") 
    icon = QtGui.QIcon() 
    icon.addPixmap(QtGui.QPixmap(":/images/Images/end.png"), 
def retranslateUi(self): 
    _translate = QtCore.QCoreApplication.translate 
    self.setWindowTitle(_translate("dial", "Dialog")) 

做同样为其他脚本,然后让这些类的对象,并呼吁他们为,

First_window = Ui_Form() 
First_window.show() 
Second_window = Ui_dial() 
Second_window.show() 

您可能需要使用调整大小()调整两个窗口,并容纳他们根据你的需求。

相关问题