鱼C论坛

 找回密码
 立即注册
查看: 1762|回复: 5

[已解决]我想学会如下代码这些东西,应该学习哪些具体知识

[复制链接]
发表于 2023-2-28 18:28:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
朋友把源码给我 我都迷糊,求大佬帮忙解答解答,还有一个文件的源码

@file: SetCookies.py
@description: 主动设置Cookie
"""

from PyQt5.QtCore import QDateTime, Qt, QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineProfile, QWebEngineView, QWebEnginePage
from PyQt5.QtWidgets import QApplication
from PyQt5.QtNetwork import QNetworkCookie
from PyQt5 import QtGui


class MyWebEngineView(QWebEngineView):

    def __init__(self, *args, **kwargs):
        super(MyWebEngineView, self).__init__(*args, **kwargs)
        # global
        # self.cookieStore = QWebEngineProfile.defaultProfile().cookieStore()


    def setup(self,username,password,role_index):

        print(role_index)
        import utils

        m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)

        self.m_89 = m_89
        self.jsessionid = jsessionid

        role_id = role_id_list[role_index]
        print(m_89,jsessionid,role_id)

        client_html = utils.login_role(m_89, jsessionid, role_id)
        role_utils = utils.setup_role_utils(m_89, jsessionid)
        validateParam, current_room = utils.get_login_info_from_client_html(client_html)


        if True:
            storage = "./miu_profile/" + str(role_id)
            profile = QWebEngineProfile(storage, self)
            page = QWebEnginePage(profile, self)
            # self.setPage(page)
            self.setPage(page)

        # current
        self.cookieStore = self.page().profile().cookieStore()
        # self.cookieStore = QWebEngineProfile.defaultProfile().cookieStore()
        # self.initCookies()





        self.cookies = [{
            "domain": "51wan.olplay.com:89",
            "hostOnly": True,
            "httpOnly": False,
            "name": "JSESSIONID",
            "value": jsessionid,
            "path": "/",
            "secure": False,
        }, {
            "domain": "51wan.olplay.com:89",
            "hostOnly": True,
            "httpOnly": False,
            "name": "m",
            "value": m_89,
            "path": "/",
            "secure": False,
        }]

        for cookie in self.cookies:
            qcookie = QNetworkCookie()
            qcookie.setName(cookie.get('name', '').encode())
            print(cookie.get('value', ''))
            qcookie.setValue(cookie.get('value', '').encode())
            qcookie.setDomain(cookie.get('domain', ''))
            qcookie.setPath(cookie.get('path', ''))
            qcookie.setExpirationDate(
                QDateTime.fromString(str(cookie.get('expirationDate', 0)),
                                     Qt.ISODate))
            qcookie.setHttpOnly(cookie.get('httpOnly', False))
            qcookie.setSecure(cookie.get('secure', False))
            # 注意可以设置具体的url
            self.cookieStore.setCookie(qcookie, QUrl())

        self.loadProgress.connect(self.onLoadProgress)
        self.load(QUrl('http://51wan.olplay.com:89/'))

    def onLoadProgress(self, progress):
        print(progress)
        if progress == 80:
            # print(self.m_89,self.jsessionid)
            print(self.cookieStore)
            # self.page().runJavaScript('alert(document.cookie);')
            # self.page().runJavaScript('alert(document);')
            # self.webEngineView.page().setDevToolsPage(self.inspector.page())
            # self.page().setDevToolsPage(self.page())

            # self.page().runJavaScript('alert(document.cookie);')
            # self.page().runJavaScript('document.write(document.cookie);')

            if True:
                if False:
                    DEBUG_PORT = '5588'
                    DEBUG_URL = 'http://127.0.0.1:%s' % DEBUG_PORT
                    import os
                    os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = DEBUG_PORT
                    self.inspector = QWebEngineView()
                    self.inspector.setMyWebEngineViewTitle('Web Inspector')
                    self.inspector.load(QUrl(DEBUG_URL))
                    # self.page().loadFinished.connect(self.handleHtmlLoaded)
                    self.page().setDevToolsPage(self.inspector.page())
                    self.inspector.show()
                    # document.getElementsByTagName('frame')[0].contentMyWebEngineView.document.getElementById('gameDoc')

                if True:
                    # self.page().runJavaScript("console.log(document.querySelector('#gameDoc'))")
                    self.page().runJavaScript("""
                   let count = 0;
                let timer = setInterval(()=>{
                    let dcmt = window.top.document.querySelector("frame").contentDocument
                   dcmt.querySelector('#gameDoc')      
                   dcmt.body.style.zoom = '80%'
                  
                   var inputBar = dcmt.querySelector('.inputBar')
                   inputBar.style.marginLeft = '-800px'
                   inputBar.style.marginTop = '50px'
                  
                   var inputBar  = dcmt.querySelector('#sd_meet_gen')
                   inputBar.style.marginLeft = '-600px'
                   inputBar.style.marginTop = '50px'
                  
                   var inputBar = dcmt.querySelector('#opt_meet_gen')
                   inputBar.style.marginLeft = '-600px'
                   inputBar.style.marginTop = '50px'
                  
                   if(count >5){
                        clearInterval(timer)
                   }
                    count += 1;
                    //dcmt.querySelector('#chatReader').remove()
                    //dcmt.querySelector('#chatMyReader').remove()
                    //dcmt.querySelector('#helpBar').remove()
                },3000)                     
               
                  
                    """)

        # if progress == 100:
        #     # 测试获取cookie
        #     print('progress 100')
        #     self.page().runJavaScript('alert(document.cookie);')


class MyWebEngineView1(QWebEngineView):

    def __init__(self, *args, **kwargs):
        super(MyWebEngineView1, self).__init__(*args, **kwargs)
        # global
        # self.cookieStore = QWebEngineProfile.defaultProfile().cookieStore()

    def setup(self, m_89, jsessionid, role_id):

        # # print(role_index)
        import utils
        #
        # m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)
        #
        # self.m_89 = m_89
        # self.jsessionid = jsessionid
        #
        # role_id = role_id_list[role_index]
        # print(m_89, jsessionid, role_id)

        client_html = utils.login_role(m_89, jsessionid, role_id)
        role_utils = utils.setup_role_utils(m_89, jsessionid)
        validateParam, current_room = utils.get_login_info_from_client_html(client_html)

        if True:
            storage = "./miu_profile/" + str(role_id)
            profile = QWebEngineProfile(storage, self)
            page = QWebEnginePage(profile, self)
            # self.setPage(page)
            self.setPage(page)

        # current
        self.cookieStore = self.page().profile().cookieStore()
        # self.cookieStore = QWebEngineProfile.defaultProfile().cookieStore()
        # self.initCookies()


        self.cookies = [{
            "domain": "51wan.olplay.com:89",
            "hostOnly": True,
            "httpOnly": False,
            "name": "JSESSIONID",
            "value": jsessionid,
            "path": "/",
            "secure": False,
        }, {
            "domain": "51wan.olplay.com:89",
            "hostOnly": True,
            "httpOnly": False,
            "name": "m",
            "value": m_89,
            "path": "/",
            "secure": False,
        }]

        for cookie in self.cookies:
            qcookie = QNetworkCookie()
            qcookie.setName(cookie.get('name', '').encode())
            print(cookie.get('value', ''))
            qcookie.setValue(cookie.get('value', '').encode())
            qcookie.setDomain(cookie.get('domain', ''))
            qcookie.setPath(cookie.get('path', ''))
            qcookie.setExpirationDate(
                QDateTime.fromString(str(cookie.get('expirationDate', 0)),
                                     Qt.ISODate))
            qcookie.setHttpOnly(cookie.get('httpOnly', False))
            qcookie.setSecure(cookie.get('secure', False))
            # 注意可以设置具体的url
            self.cookieStore.setCookie(qcookie, QUrl())

        self.loadProgress.connect(self.onLoadProgress)
        self.load(QUrl('http://51wan.olplay.com:89/'))

    def onLoadProgress(self, progress):
        print(progress)
        if progress == 80:
            # print(self.m_89,self.jsessionid)
            print(self.cookieStore)
            # self.page().runJavaScript('alert(document.cookie);')
            # self.page().runJavaScript('alert(document);')
            # self.webEngineView.page().setDevToolsPage(self.inspector.page())
            # self.page().setDevToolsPage(self.page())

            # self.page().runJavaScript('alert(document.cookie);')
            # self.page().runJavaScript('document.write(document.cookie);')

            if True:
                if False:
                    DEBUG_PORT = '5588'
                    DEBUG_URL = 'http://127.0.0.1:%s' % DEBUG_PORT
                    import os
                    os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = DEBUG_PORT
                    self.inspector = QWebEngineView()
                    self.inspector.setMyWebEngineViewTitle('Web Inspector')
                    self.inspector.load(QUrl(DEBUG_URL))
                    # self.page().loadFinished.connect(self.handleHtmlLoaded)
                    self.page().setDevToolsPage(self.inspector.page())
                    self.inspector.show()
                    # document.getElementsByTagName('frame')[0].contentMyWebEngineView.document.getElementById('gameDoc')

                if True:
                    # self.page().runJavaScript("console.log(document.querySelector('#gameDoc'))")
                    self.page().runJavaScript("""
                   let count = 0;
                let timer = setInterval(()=>{
                    let dcmt = window.top.document.querySelector("frame").contentDocument
                    
                   dcmt.querySelector('#gameDoc')      
                   dcmt.body.style.zoom = '70%'

                   var inputBar = dcmt.querySelector('.inputBar')
                   inputBar.style.marginLeft = '-800px'
                   inputBar.style.marginTop = '50px'

                   var inputBar  = dcmt.querySelector('#sd_meet_gen')
                   inputBar.style.marginLeft = '-600px'
                   inputBar.style.marginTop = '50px'

                   var inputBar = dcmt.querySelector('#opt_meet_gen')
                   inputBar.style.marginLeft = '-600px'
                   inputBar.style.marginTop = '50px'

                   if(count >5){
                        clearInterval(timer)
                   }
                    count += 1;
                    //dcmt.querySelector('#chatReader').remove()
                    //dcmt.querySelector('#chatMyReader').remove()
                    //dcmt.querySelector('#helpBar').remove()
                },3000)                     


                    """)

        # if progress == 100:
        #     # 测试获取cookie
        #     print('progress 100')
        #     self.page().runJavaScript('alert(document.cookie);')


if __name__ == '__main__':
    import cgitb
    import sys

    cgitb.enable(format='text')
    app = QApplication(sys.argv)
    w = MyWebEngineView()
    w.show()
    sys.exit(app.exec_())
最佳答案
2023-3-14 23:04:36
要学习这段代码,需要掌握以下知识:

PyQt5 库:PyQt5 是 Python 语言的一个 GUI 框架,可用于创建 Windows、MacOS 和 Linux 上的桌面应用程序。它提供了很多控件和功能,可以方便地创建用户界面和处理用户交互。

QWebEngineView 控件:QWebEngineView 是 PyQt5 中的一个控件,用于显示 Web 页面。它基于 Chromium 引擎,支持现代 Web 技术,如 HTML5、CSS3 和 JavaScript。

QWebEngineProfile 和 QWebEnginePage 类:QWebEngineProfile 和 QWebEnginePage 是 QWebEngineView 的两个重要组件。QWebEngineProfile 用于管理 WebEngine 的配置和数据,如 Cookie、缓存、代理等等。QWebEnginePage 用于显示 Web 页面,并提供了很多操作功能,如加载页面、执行 JavaScript、截图等等。

Cookie:Cookie 是一种 Web 技术,用于在客户端保存用户的状态信息。在这段代码中,通过设置 Cookie 来模拟用户登录网站。可以使用 QNetworkCookie 类来创建和管理 Cookie。

Python 的基础知识:这段代码中还涉及到 Python 的一些基础知识,如类的继承、列表和字典的使用等等。

Web 技术:这段代码中涉及到的网站登录和 Cookie 设置是 Web 技术的一部分,需要了解相关的知识。

建议先学习 Python 的基础知识和 Web 技术,然后再学习 PyQt5 和 QWebEngineView 控件的使用。可以参考一些 Python、Web 技术、PyQt5 和 QWebEngineView 的教程、书籍和在线课程进行学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-28 18:29:25 | 显示全部楼层
import time

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *

import sys
from miu_browser import MyWebEngineView


from PyQt5.QtCore import QRunnable, Qt, QThreadPool
from PyQt5.QtWidgets import (
    QApplication,
    QLabel,
    QMainWindow,
    QPushButton,
    QVBoxLayout,
    QWidget,
)
import logging

# 1. Subclass QRunnable
class Runnable(QRunnable):
    def __init__(self,role_utils):
        super().__init__()
        self.role_utils = role_utils
    def run(self):
        # Your long-running task goes here ...
        items = self.role_utils.get_items()
        print('QRunnable run')
        # for item in items:
        #     print(item)
        for item in items:
            str_desc = item[6]
            item_name = item[0]
            item_id = item[2]
            item_count = item[1]
            # print(item)
            if 'arm.armor' in str_desc and 'uncommon' in str_desc:
                print(item)
                if False:
                    self.role_utils.send_command('/foo fenjie {}'.format(item_id))
                    time.sleep(7)
        pass


class MainWindow(QWidget):

    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        if False:
            layout = QGridLayout()
            # Add widgets to the layout
            layout.addWidget(QPushButton("Button at (0, 0)"), 0, 0)
            layout.addWidget(QPushButton("Button at (0, 1)"), 0, 1)
            layout.addWidget(QPushButton("Button Spans two Cols"), 1, 0, 1, 2)
            # Set the layout on the application's window
            self.setLayout(layout)
            self.show()

    def setup(self, username, password):
        self.setWindowTitle('miu')
        import utils
        from miu_browser import MyWebEngineView1
        m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)

        role_info_list = []

        self.browser = MyWebEngineView1()
        self.browser.setup(m_89, jsessionid, role_id_list[0])
        role_info_list.append({
            'm_89': m_89,
            'jsessionid': jsessionid,
            'role_id': role_id_list[0]
        })

        m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)
        self.browser1 = MyWebEngineView1()
        self.browser1.setup(m_89, jsessionid, role_id_list[1])
        role_info_list.append({
            'm_89': m_89,
            'jsessionid': jsessionid,
            'role_id': role_id_list[1]
        })

        m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)
        self.browser2 = MyWebEngineView1()
        self.browser2.setup(m_89, jsessionid, role_id_list[2])
        role_info_list.append({
            'm_89': m_89,
            'jsessionid': jsessionid,
            'role_id': role_id_list[2]
        })

        m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)
        self.browser3 = MyWebEngineView1()
        self.browser3.setup(m_89, jsessionid, role_id_list[3])
        role_info_list.append({
            'm_89': m_89,
            'jsessionid': jsessionid,
            'role_id': role_id_list[3]
        })

        m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)
        self.browser4 = MyWebEngineView1()
        self.browser4.setup(m_89, jsessionid, role_id_list[4])
        role_info_list.append({
            'm_89': m_89,
            'jsessionid': jsessionid,
            'role_id': role_id_list[4]
        })

        layout = QGridLayout()
        layout.addWidget(self.browser, 0, 0)
        layout.addWidget(self.browser1, 0, 1)

        layout.addWidget(self.browser2, 0, 2)
        layout.addWidget(self.browser3, 1, 0)
        layout.addWidget(self.browser4, 1, 1)
        self.setLayout(layout)

        # setup buttons
        if True:
            button_grid = QGridLayout()
            layout.addLayout(button_grid, 1, 2)
            self.teamButton = QPushButton('组队(会先退出当前队伍')
            button_grid.addWidget(self.teamButton, 0, 0)

            self.followButton = QPushButton('跟随')
            button_grid.addWidget(self.followButton, 1, 0)

            self.repairButton = QPushButton('修理全部')
            button_grid.addWidget(self.repairButton, 2, 0)

            # self. = QLineEdit()
            # button_grid.addWidget(self.clearBagButton, 3, 0)
            self.clearBagButton = QPushButton('丢弃绿图/溶xx石/')
            button_grid.addWidget(self.clearBagButton, 4, 0)

            self.learnButton = QPushButton('学习分解(需要先走到哨所')
            button_grid.addWidget(self.learnButton, 5, 0)

            # self.learnButton = QPushButton('学习分解(需要先走到哨所')
            # button_grid.addWidget(self.learnButton, 6, 0)

            self.disenchantButton = QPushButton('分解所有绿装')
            button_grid.addWidget(self.disenchantButton, 7, 0)

            # 分解添加到快捷栏
            #     /putcut skill skill.output.FenJie 11
            # /foo fenjie 109068010

            r0 = role_info_list[0]
            r1 = role_info_list[1]
            r2 = role_info_list[2]
            r3 = role_info_list[3]
            r4 = role_info_list[4]
            m0, j0, i0 = r0.values()
            m1, j1, i1 = r1.values()
            m2, j2, i2 = r2.values()
            m3, j3, i3 = r3.values()
            m4, j4, i4 = r4.values()
            SLEEP_INTERVAL = 1

            def teamButtonClicked():
                r0 = role_info_list[0]
                r1 = role_info_list[1]
                r2 = role_info_list[2]
                r3 = role_info_list[3]
                r4 = role_info_list[4]
                m0, j0, i0 = r0.values()
                m1, j1, i1 = r1.values()
                m2, j2, i2 = r2.values()
                m3, j3, i3 = r3.values()
                m4, j4, i4 = r4.values()
                role_utils = utils.setup_role_utils(m0, j0)
                SLEEP_INTERVAL = 0.3

                role_utils = utils.setup_role_utils(m0, j0)
                role_utils.send_command("/foo rank tui {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m1, j1)
                role_utils.send_command("/foo rank tui {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m2, j2)
                role_utils.send_command("/foo rank tui {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m3, j3)
                role_utils.send_command("/foo rank tui {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m4, j4)
                role_utils.send_command("/foo rank tui {}".format(i0))
                time.sleep(SLEEP_INTERVAL)

                role_utils = utils.setup_role_utils(m0, j0)
                role_utils.send_command("/foo rank add {}".format(i1))
                time.sleep(SLEEP_INTERVAL)
                role_utils.send_command("/foo rank add {}".format(i2))
                time.sleep(SLEEP_INTERVAL)
                role_utils.send_command("/foo rank add {}".format(i3))
                time.sleep(SLEEP_INTERVAL)
                role_utils.send_command("/foo rank add {}".format(i4))
                time.sleep(SLEEP_INTERVAL)

                role_utils = utils.setup_role_utils(m1, j1)
                role_utils.send_command("/foo rank agree {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m2, j2)
                role_utils.send_command("/foo rank agree {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m3, j3)
                role_utils.send_command("/foo rank agree {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m4, j4)
                role_utils.send_command("/foo rank agree {}".format(i0))
                time.sleep(SLEEP_INTERVAL)

            def follow():
                r0 = role_info_list[0]
                r1 = role_info_list[1]
                r2 = role_info_list[2]
                r3 = role_info_list[3]
                r4 = role_info_list[4]
                m0, j0, i0 = r0.values()
                m1, j1, i1 = r1.values()
                m2, j2, i2 = r2.values()
                m3, j3, i3 = r3.values()
                m4, j4, i4 = r4.values()
                SLEEP_INTERVAL = 1

                role_utils = utils.setup_role_utils(m1, j1)
                role_utils.send_command("/follow {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m2, j2)
                role_utils.send_command("/follow {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m3, j3)
                role_utils.send_command("/follow {}".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m4, j4)
                role_utils.send_command("/follow {}".format(i0))
                time.sleep(SLEEP_INTERVAL)

            def repair():
                r0 = role_info_list[0]
                r1 = role_info_list[1]
                r2 = role_info_list[2]
                r3 = role_info_list[3]
                r4 = role_info_list[4]
                m0, j0, i0 = r0.values()
                m1, j1, i1 = r1.values()
                m2, j2, i2 = r2.values()
                m3, j3, i3 = r3.values()
                m4, j4, i4 = r4.values()
                SLEEP_INTERVAL = 1

                role_utils = utils.setup_role_utils(m0, j0)
                role_utils.send_command("/xiuli all".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m1, j1)
                role_utils.send_command("/xiuli all".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m2, j2)
                role_utils.send_command("/xiuli all".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m3, j3)
                role_utils.send_command("/xiuli all".format(i0))
                time.sleep(SLEEP_INTERVAL)
                role_utils = utils.setup_role_utils(m4, j4)
                role_utils.send_command("/xiuli all".format(i0))
                time.sleep(SLEEP_INTERVAL)

            def clearBag():

                role_utils = utils.setup_role_utils(m0, j0)
                items = role_utils.get_items()
                for item in items:
                    print(item)
                    # if item[0] in []:
                    #     role_utils.send_command('/drop {} {}'.format(item[2],item[1]))

                role_utils_list = [utils.setup_role_utils(m0, j0),
                                   utils.setup_role_utils(m1, j1),
                                   utils.setup_role_utils(m2, j2),
                                   utils.setup_role_utils(m3, j3),
                                   utils.setup_role_utils(m4, j4)
                                   ]
                for role_utils in role_utils_list:
                    items = role_utils.get_items()
                    time.sleep(1)
                    for item in items:
                        # print(item)
                        str_desc = item[6]
                        item_name = item[0]
                        item_id = item[2]
                        item_count = item[1]
                        if item_name.startswith('魔石图') and not item_name.endswith('晶石') and not item_name.endswith(
                                '魔石'):
                            print(item_name, str_desc)
                            role_utils.send_command('/drop {} {}'.format(item_id, item_count))
                            time.sleep(1)
                        if item_name.startswith('设计图') and 'lv' in str_desc.lower():
                            print(item_name, str_desc)
                            role_utils.send_command('/drop {} {}'.format(item_id, item_count))
                            time.sleep(1)
                        if item_name.startswith('缝纫图') and 'lv' in str_desc.lower():
                            print(item_name, str_desc)
                            role_utils.send_command('/drop {} {}'.format(item_id, item_count))
                            time.sleep(1)
                        if '溶' in item_name and item_name.endswith('石'):
                            print(item_name, str_desc)
                            role_utils.send_command('/drop {} {}'.format(item_id, item_count))
                            time.sleep(1)

                        # if (item_name.startswith('缝纫图')
                        #     or item_name.startswith('魔石图')
                        #     or item_name.startswith('设计图')
                        # ):
                        # if (item_name.startswith('缝纫图')
                        #     or item_name.startswith('魔石图')
                        #     or item_name.startswith('设计图')
                        # ) and ('uncommon' in str_desc.lower or 'lv' in str_desc.lower):
                        #     role_utils.send_command('/drop {} {}'.format(item_id, item_count))
                        #     time.sleep(1)

        def learn_disenchant():
            r0 = role_info_list[0]
            r1 = role_info_list[1]
            r2 = role_info_list[2]
            r3 = role_info_list[3]
            r4 = role_info_list[4]
            m0, j0, i0 = r0.values()
            m1, j1, i1 = r1.values()
            m2, j2, i2 = r2.values()
            m3, j3, i3 = r3.values()
            m4, j4, i4 = r4.values()
            SLEEP_INTERVAL = 1


            role_utils = utils.setup_role_utils(m0, j0)
            role_utils.send_command("/talk 1 z_2")

            time.sleep(SLEEP_INTERVAL)
            role_utils = utils.setup_role_utils(m1, j1)
            role_utils.send_command("/talk 1 z_2")

            time.sleep(SLEEP_INTERVAL)
            role_utils = utils.setup_role_utils(m2, j2)
            role_utils.send_command("/talk 1 z_2")

            time.sleep(SLEEP_INTERVAL)
            role_utils = utils.setup_role_utils(m3, j3)
            role_utils.send_command("/talk 1 z_2")

            time.sleep(SLEEP_INTERVAL)
            role_utils = utils.setup_role_utils(m4, j4)
            role_utils.send_command("/talk 1 z_2")

        def disenchant():
            r0 = role_info_list[0]
            r1 = role_info_list[1]
            r2 = role_info_list[2]
            r3 = role_info_list[3]
            r4 = role_info_list[4]
            m0, j0, i0 = r0.values()
            m1, j1, i1 = r1.values()
            m2, j2, i2 = r2.values()
            m3, j3, i3 = r3.values()
            m4, j4, i4 = r4.values()
            SLEEP_INTERVAL = 1
            print('disenchant')

            role_utils = utils.setup_role_utils(m0, j0)
            role_utils_list = [utils.setup_role_utils(m0, j0),
                               utils.setup_role_utils(m1, j1),
                               utils.setup_role_utils(m2, j2),
                               utils.setup_role_utils(m3, j3),
                               utils.setup_role_utils(m4, j4)
                               ]
            pool = QThreadPool.globalInstance()
            for role_utils in role_utils_list:
                # threadCount = QThreadPool.globalInstance().maxThreadCount()
                runnable = Runnable(role_utils)
                pool.start(runnable)
                continue
                items = role_utils.get_items()
                time.sleep(1)
                for item in items:
                    str_desc = item[6]
                    item_name = item[0]
                    item_id = item[2]
                    item_count = item[1]
                    # print(item)
                    if 'arm.armor' in str_desc and 'uncommon' in str_desc:
                        print(item)
                        # role_utils.send_command('/')

                #     if item[0].startswith('缝纫图'):

            #
            # time.sleep(SLEEP_INTERVAL)
            # role_utils = utils.setup_role_utils(m1, j1)
            #
            # time.sleep(SLEEP_INTERVAL)
            # role_utils = utils.setup_role_utils(m2, j2)
            #
            # time.sleep(SLEEP_INTERVAL)
            # role_utils = utils.setup_role_utils(m3, j3)
            #
            # time.sleep(SLEEP_INTERVAL)
            # role_utils = utils.setup_role_utils(m4, j4)

        self.teamButton.clicked.connect(teamButtonClicked)
        self.followButton.clicked.connect(follow)
        self.repairButton.clicked.connect(repair)
        self.clearBagButton.clicked.connect(clearBag)
        self.learnButton.clicked.connect(learn_disenchant)
        self.disenchantButton.clicked.connect(disenchant)

        print(role_info_list)

        # self.setCentralWidget(self.browser)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    g_u = None
    g_p = None
    g_window = None


    class LoginWin(QMainWindow):

        def __init__(self):
            super(LoginWin, self).__init__()

            self.setWindowTitle("My App")

            layout = QGridLayout()
            uInput = QLineEdit('ceshizhanghao000')
            pInput = QLineEdit('ceshizhanghao')
            loginButton = QPushButton('多开')
            layout.addWidget(uInput, 0, 0)
            layout.addWidget(pInput, 1, 0)
            layout.addWidget(loginButton, 2, 0)
            widget = QWidget()
            widget.setLayout(layout)
            self.setCentralWidget(widget)

            def login():
                g_u = uInput.text()
                g_p = pInput.text()

                self.close()
                if True:
                    g_window.setup(g_u, g_p)

            loginButton.clicked.connect(login)



    lw = LoginWin()
    lw.show()

    g_window = MainWindow()

    app.exec_()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-1 09:16:52 | 显示全部楼层
halemorning 发表于 2023-2-28 18:29
import time

from PyQt5.QtCore import *

PYQT5 啊  百度就好了  这是一个专门研究GUI的模块
传统TK 大家都嫌它的界面太丑   所以就有了更先进的模块(但同时 也更加复杂)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-4 02:03:27 | 显示全部楼层
m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)

  File "F:\pythonProject3\MiuMultiBrowser_launch1.py", line 460, in login
    g_window.setup(g_u, g_p)
  File "F:\pythonProject3\MiuMultiBrowser_launch1.py", line 67, in setup
    m_89, jsessionid, role_id_list = utils.get_m_jsessionid_id_list(username, password)
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'utils' has no attribute 'get_m_jsessionid_id_list'
这个错误不知道怎么解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-14 23:04:36 | 显示全部楼层    本楼为最佳答案   
要学习这段代码,需要掌握以下知识:

PyQt5 库:PyQt5 是 Python 语言的一个 GUI 框架,可用于创建 Windows、MacOS 和 Linux 上的桌面应用程序。它提供了很多控件和功能,可以方便地创建用户界面和处理用户交互。

QWebEngineView 控件:QWebEngineView 是 PyQt5 中的一个控件,用于显示 Web 页面。它基于 Chromium 引擎,支持现代 Web 技术,如 HTML5、CSS3 和 JavaScript。

QWebEngineProfile 和 QWebEnginePage 类:QWebEngineProfile 和 QWebEnginePage 是 QWebEngineView 的两个重要组件。QWebEngineProfile 用于管理 WebEngine 的配置和数据,如 Cookie、缓存、代理等等。QWebEnginePage 用于显示 Web 页面,并提供了很多操作功能,如加载页面、执行 JavaScript、截图等等。

Cookie:Cookie 是一种 Web 技术,用于在客户端保存用户的状态信息。在这段代码中,通过设置 Cookie 来模拟用户登录网站。可以使用 QNetworkCookie 类来创建和管理 Cookie。

Python 的基础知识:这段代码中还涉及到 Python 的一些基础知识,如类的继承、列表和字典的使用等等。

Web 技术:这段代码中涉及到的网站登录和 Cookie 设置是 Web 技术的一部分,需要了解相关的知识。

建议先学习 Python 的基础知识和 Web 技术,然后再学习 PyQt5 和 QWebEngineView 控件的使用。可以参考一些 Python、Web 技术、PyQt5 和 QWebEngineView 的教程、书籍和在线课程进行学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-27 10:27:01 | 显示全部楼层
不二猫猫 发表于 2023-3-14 23:04
要学习这段代码,需要掌握以下知识:

PyQt5 库:PyQt5 是 Python 语言的一个 GUI 框架,可用于创建 Wind ...

谢谢大佬详细的讲解,接下来我会根据路线去学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 01:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表