使用pywebview在程序内部显示网页。我遇到了一个问题:当创建一个webview窗口时,主程序窗口变为inactive ,并且在 webview 窗口关闭后记住并复制它的操作(移动) 。 我试图通过stream启动,可能没有正确使用它。谁遇到过这个问题怎么解决?主窗口不被 webview 窗口挡住是必要的。最低代码如下。要工作,您需要安装:PyQt5、PyWebview。
(不要提供 PyQtWebEngine 的知名变体,它仅适用于 x64,并且在安装/卸载期间它会踢出正在工作的 PyQt5)。
from threading import Thread
import sys
import webview
from PyQt5 import QtWidgets
from PyQt5.Qt import *
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.resize(400, 200)
self.centralwidget = QtWidgets.QWidget()
self.setCentralWidget(self.centralwidget)
self.label = QtWidgets.QLabel('<h1>Double Click Me!</h1>', alignment=Qt.AlignCenter)
self.label.setStyleSheet('background-color: #5599ff;')
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
def mouseDoubleClickEvent(self, event):
thread_func()
def thread_func():
webview.start(win2)
if __name__ == '__main__':
win2 = webview.create_window('tst_win_2', html='text2', width=400, height=300)
app = QApplication(sys.argv)
window = Window()
window.show()
thread = Thread(target=thread_func)
thread.start()
thread.join()
sys.exit(app.exec_())
我联系了PyWebview的开发者,确实有这样的问题。图形用户界面功能。通过multiprocessing解决了这个问题。我输入了一个笨拙的代码,但它反映了解决方案的本质。