今天我用PyQt5写了一个程序,代码如下:
from PyQt5.QtWidgets import QAction,QApplication,QToolBar,QMainWindow,QGridLayout
from PyQt5.QtWebEngineWidgets import QWebEngineView
class WebEngineView(QWebEngineView):
def __init__(self, mainwindow, parent=None):
super(WebEngineView, self).__init__(parent)
self.mainwindow = mainwindow
def createWindow(self, QWebEnginePage_WebWindowType):
new_webview = WebEngineView(self.mainwindow)
self.mainwindow.create_tab(new_webview)
return new_webview
class Main(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("__None__")
self.View=QWebEngineView(self)
self.Layout=QGridLayout()
#self.Layout.setContentsMargins(0, 0, 0, 0)
self.Layout.addWidget(self.View,0,0);self.Layout.addWidget(QWebEngineView(),0,1)
self.setLayout(self.Layout)
if __name__ == "__main__":
App=QApplication([])
Main().show()
App.exec_()
跑的时候就闪退了。出来一个窗口,又消失了,程序却还在运行。
这种问题我以前就遇到过了。实在解决不了,提一个问题。
请各位多多指教!
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QMainWindow,QGridLayout
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle('例子')
self.setGeometry(5,30,1355,730)
#布局
self.window=QWidget()
self.browser=QWebEngineView()
self.Layout=QGridLayout()
self.Layout.addWidget(self.browser,0,0)
self.window.setLayout(self.Layout)
self.browser.load(QUrl('https://www.163.com'))
self.setCentralWidget(self.browser)
if __name__ == '__main__':
app=QApplication(sys.argv)
win=MainWindow()
win.show()
app.exit(app.exec_())
该回答引用GPTᴼᴾᴱᴺᴬᴵ,具体如下:
这个程序可能是因为没有设置窗口的大小而导致窗口大小为0,从而导致程序窗口出现后立即消失。您可以尝试将 Main 类的 init 方法中设置窗口大小,如下所示:
class Main(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("__None__")
self.View=QWebEngineView(self)
self.Layout=QGridLayout()
self.Layout.addWidget(self.View, 0, 0)
self.Layout.addWidget(QWebEngineView(), 0, 1)
widget = QWidget()
widget.setLayout(self.Layout)
self.setCentralWidget(widget)
self.resize(800, 600) # 设置窗口大小
另外,还有一点需要注意的是,Main 类没有继承自 QWidget,因此不能直接调用 setLayout 方法设置布局。可以通过在 Main 类中创建一个 QWidget 对象,将布局设置给这个 QWidget 对象,然后再将这个 QWidget 对象设置为主窗口的中央窗口。
如果以上回答对您有所帮助,望采纳~谢谢