This repository was archived by the owner on Sep 9, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqt_test.py
More file actions
61 lines (49 loc) · 1.92 KB
/
qt_test.py
File metadata and controls
61 lines (49 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import sys
from PyQt5.QtNetwork import QNetworkCookie
from PyQt5.QtCore import QUrl, pyqtSignal, QEventLoop
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
class Window(QWidget):
def __init__(self):
super().__init__()
self.setup()
def setup(self):
self.box = QVBoxLayout(self)
self.web = MyWebEngineView() # 创建浏览器组件对象
self.web.cookieSignal.connect(self.handleCookie) # 连接信号
self.web.resize(1280, 720)
self.web.load(QUrl("https://music.163.com/#/login"))
self.box.addWidget(self.web)
self.cookie_value = None # 初始化变量
def handleCookie(self, value):
self.cookie_value = value # 存储cookie的值
QApplication.instance().quit() # 退出应用程序
class MyWebEngineView(QWebEngineView):
# 定义一个信号
cookieSignal = pyqtSignal(str)
def __init__(self, *args, **kwargs):
super(MyWebEngineView, self).__init__(*args, **kwargs)
# 清空所有Cookies
QWebEngineProfile.defaultProfile().cookieStore().deleteAllCookies()
# 绑定cookie被添加的信号槽
QWebEngineProfile.defaultProfile().cookieStore().cookieAdded.connect(
self.onCookieAdd
)
self.cookies = {}
def onCookieAdd(self, cookie: QNetworkCookie):
name = cookie.name().data().decode("utf-8")
value = cookie.value().data().decode("utf-8")
self.cookies[name] = value
if name == "MUSIC_U":
# 发出信号并传递 value 值
self.cookieSignal.emit(value)
def login() -> dict:
app = QApplication(sys.argv)
w = Window()
w.show()
# 自定义事件循环
loop = QEventLoop()
w.destroyed.connect(loop.quit)
loop.exec_()
# 在事件循环退出后输出 cookie 的值
return {"MUSIC_U": w.cookie_value}