У меня есть три отдельных скрипта, которые я пытаюсь собрать вместе как простое приложение.Я хочу иметь возможность щелкнуть кнопку в QMainWindow и изменить текущее отображение на окно Panda3D, вложенное в виджет PyQt, с наложенной на него одной кнопкой.
У меня работают все отдельные сценарии, но яне знаю, как их собрать.Как изменить отображение главного окна в приложении, перейти к другим виджетам и т. Д.
#MAIN WINDOW
import sys
import PyQt5
from PyQt5.QtWidgets import (QMainWindow, QWidget, QToolTip, QPushButton,
QApplication,
QHBoxLayout, QVBoxLayout)
app = QApplication(sys.argv)
screenres = app.desktop().screenGeometry()
scrW, scrH = screenres.width(), screenres.height()
width = 500
height = 500
#########################################################
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initHomeScreen()
#-----------------------------------------------------------
def setWindow(self):
self.setGeometry((scrW - width)/2, (scrH - height)/2, width, height)
#(xpos, ypos, width, height)
self.setWindowTitle("Dragon's World")
#-----------------------------------------------------------
def initHomeScreen(self):
self.setWindow()
#____________BUTTONS
#The quit button
btnW = (width *.15)
btnH = (height *.05)
quitbtn = QPushButton('Quit', self) #self stands for the parent
widget, in this case the application object
quitbtn.resize(btnW, btnH)
quitbtn.clicked.connect(QApplication.instance().quit)
#Load game button
loadbtn = QPushButton('Load Game', self)
loadbtn.resize(btnW, btnH)
#loadscrn = MainWindow.initLoadScreen()
#loadbtn.clicked.connect(loadscrn)
#____________LAYOUTS
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(loadbtn)
hbox.addWidget(quitbtn)
hbox.addStretch(1)
vbox = QVBoxLayout()
vbox.addStretch(4)
vbox.addLayout(hbox)
vbox.addStretch(1)
#_____________
homewidg = QWidget()
homewidg.setLayout(vbox)
self.setCentralWidget(homewidg)
self.show()
#------------------------------------------------------------
def initLoadScreen(self):
pass
##########################################################
if __name__ == '__main__':
window = MainWindow()
sys.exit(app.exec_())
#PANDA 3D WINDOW
from direct.showbase.ShowBase import ShowBase
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
# Load the environment model.
self.scene = self.loader.loadModel("models/environment")
# Reparent the model to render.
self.scene.reparentTo(self.render)
# Apply scale and position transforms on the model.
self.scene.setScale(0.25, 0.25, 0.25)
self.scene.setPos(-8, 42, 0)
app = MyApp()
app.run()
#GUI IMPOSED ON PANDA3D
import PyQt5
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout,
QHBoxLayout
import sys
app = QApplication(sys.argv)
####################################################
class GameScreen(QWidget):
def __init__(self):
super().__init__()
self.initHomeButton()
self.show()
#-------------------------------------------
def initHomeButton(self):
homebtn = QPushButton('Home')
homebtn.resize(100, 25)
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(homebtn)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
self.setLayout(vbox)
#####################################################
if __name__ == '__main__':
window = GameScreen()
sys.exit(app.exec_())