每个男孩内心都是追求酷炫屌炸的,在逐渐对命令行无感后,我盯上了图形化,将脚本进行GUI设计,想想就很酷。(其实是公司需求………………)
用知识的土壤来填埋这些坑洞
本次采用QT的PySide2进行GUI设计!
架构思路是将QT的信号、槽等,放在__init__下,我在GUI上触发相应的功能,便运行相应的实例,去执行实例的模块功能。
Qt 是一个跨平台的 C++图形用户界面库,由挪威 TrollTech 公司于1995年底出品。
PySide2 是来自Qt for Python 项目的官方 Python 模块 ,它提供对完整 Qt 5.12+ 框架的访问。
使用豆瓣源下载安装 pip install pyside2 -i https://pypi.douban.com/simple/
设计GUI可以使用2种方式: 1、调用相应的代码创建出来,但图形需要自身脑部构思(脑残党泪目) 2、使用QT界面生成器 Qt Designer,进行图形化设计,再调用各类信号和槽(真正的人类操作) Windows下,运行 Python安装目录下 Scripts\pyside2-designer.exe 这个可执行文件,启动Qt Designer。
QApplication提供了整个图形界面程序的底层管理功能,比如:初始化、程序入口参数的处理,用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件,等等…
QUiLoader使独立的应用程序在运行时动态地创建用户界面,使用存储在UI文件或插件路径中指定的信息。 此外,可以自定义或派生自己的类加载器创建自己的用户界面。也就是说:用于动态的加载设计师生成的界面(QMainWindow、QWidget、QDialog)。 QUiLoader类允许创建基于存储在UI文件中的信息或指定插件路径的(使用Qt Designer创建的)小部件。指定插件路径可以使用pluginPaths()函数来检索。同样,一个UI文件的内容可以使用load()函数来检索。
GUI上图标需要使用ico格式,可以下载jpg后进行转换,推荐一个图标来源
源码
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from PySide2.QtWidgets import QApplication,QMessageBox
from PySide2.QtUiTools import QUiLoader
from PySide2.QtGui import QIcon
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
import sys
from threading import Thread
from time import sleep
import os
class Wzscript:
def __init__(self):
self.GUI= QUiLoader().load('xxx.ui')
self.GUI.back.clicked.connect(self.Multithreading)
self.GUI.action_Exit.triggered.connect(self.Exit)
self.GUI.action_version.triggered.connect(self.version)
def version(self):
QMessageBox.information(self.GUI,
'xxx\n',
'xxx'
)
def Exit(self):
os._exit(0)
def Multithreading(self):
self.GUI.textB_out.append('xx........................')
self.GUI.textB_out.ensureCursorVisible()
self.thread = Thread(
target = self.main
)
self.thread.start()
def main(self):
web = webdriver.Chrome('C:\xxxx\chromedriver.exe')
blacklist_if = self.GUI.lineE_url.text().split(':')[1]
blacklist ='//xxx','//xxx','//xxx'
for blacklist_for in blacklist:
if blacklist_if == blacklist_for:
self.GUI.textB_out.append("{}".format(
'xxxxx'
))
self.GUI.textB_out.ensureCursorVisible()
sys.exit(web.close())
web.get(self.GUI.lineE_url.text())
web.maximize_window()
sleep(x)
web.implicitly_wait(x)
web.find_element_by_class_name('xx').click()
sleep(x)
web.find_element_by_class_name('ui-xx-text').click()
sleep(x)
web.find_element_by_class_name('ui-xx-text').click()
sleep(x)
web.find_element_by_class_name('xx').click()
sleep(x)
web.implicitly_wait(0)
locator = (By.CLASS_NAME, 'ui-xx-text')
element = EC.invisibility_of_element_located(locator)
if (element(web)):
print(element(web))
else:
web.find_element_by_class_name('ui-xx-text').click()
sleep(x)
web.close()
app = QApplication([])
app.setWindowIcon(QIcon('xx.png'))
Wzscript = Wzscript()
Wzscript.GUI.show()
sys.exit(app.exec_())