多窗口传递信号,无边框移动,12306验证码,pyqt5
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多窗口传递信号,无边框移动,12306验证码,pyqt5相关的知识,希望对你有一定的参考价值。
Form1:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from Form1 import Ui_Form
import sys,qdarkstyle
import Form2_Main
class Form1_Main( QDialog,Ui_Form):
def __init__(self):
super(Form1_Main,self).__init__()
self.setupUi(self)
#self.setAttribute(Qt.WA_TranslucentBackground)
# 设置窗体无边框
self.setWindowFlags(Qt.FramelessWindowHint)
self.pushButton.clicked.connect(self.showFrom2)
self.pushButton_2.clicked.connect(self.close)
def showFrom2(self):
F2_window = Form2_Main.Form2_Main()
F2_window.Form2_signal.connect(self.showFrom2msg)
F2_window.show()
F2_window.exec_()
def showFrom2msg(self,strs):
print(strs)
def mousePressEvent(self, QMouseEvent):
if QMouseEvent.button() == Qt.LeftButton:
self.flag = True
# 获取鼠标相对窗口的位置
self.m_Position = QMouseEvent.globalPos() - self.pos()
QMouseEvent.accept()
# 更改鼠标图标
self.setCursor(QCursor(Qt.OpenHandCursor))
def mouseMoveEvent(self, QMouseEvent):
if Qt.LeftButton and self.flag:
# 更改窗口位置
self.move(QMouseEvent.globalPos()-self.m_Position)
QMouseEvent.accept()
def mouseReleaseEvent(self, QMouseEvent):
self.flag = False
self.setCursor(QCursor(Qt.ArrowCursor))
if __name__ == ‘__main__‘:
app = QApplication(sys.argv)
window = Form1_Main()
app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
window.show()
sys.exit(app.exec_())
Form2:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from Form2 import Ui_Form
import sys,requests,base64,qdarkstyle
class Form2_Main(QDialog,Ui_Form):
Form2_signal = pyqtSignal(str)
def __init__(self,parent=None):
super(Form2_Main,self).__init__(parent)
self.setupUi(self)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setWindowModality(Qt.ApplicationModal)
self.setModal(True)
self.pushButton.clicked.connect(self.get_pic)
self.pushButton_2.clicked.connect(self.close)
def backStr(self):
self.Form2_signal.emit(‘Form2 message‘)#验证成功返回数据
def get_pic(self):
url = ‘https://kyfw.12306.cn/passport/captcha/captcha-image64?login_site=E&module=login&rand=sjrand‘
try:
r = requests.get(url)
print(‘content: ‘,r.content)
dic = r.json()
print(‘json:‘,dic)
png = base64.b64decode(dic[‘image‘])
print(‘png: ‘,png)
photo = QPixmap(100,100)
photo.loadFromData(png)
self.label.setPixmap(photo)
self.Form2_signal.emit(‘Form2 message‘) # 验证成功返回数据
except Exception as e:
print(‘Exception‘,e)
def mousePressEvent(self, event):
if(event.button()==Qt.LeftButton):
self.flag = True
self.m_Position = event.globalPos() - self.pos()
event.accept()
self.setCursor(QCursor(Qt.OpenHandCursor))
def mouseMoveEvent(self, event):
if Qt.LeftButton and self.flag:
self.move(event.globalPos() - self.m_Position)
event.accept()
def mouseReleaseEvent(self, event):
self.flag = False
self.setCursor(QCursor(Qt.ArrowCursor))
if __name__ == ‘__main__‘:
app = QApplication(sys.argv)
window = Form2_Main()
app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
window.show()
sys.exit(app.exec_())
运行效果:
以上是关于多窗口传递信号,无边框移动,12306验证码,pyqt5的主要内容,如果未能解决你的问题,请参考以下文章
验证码终极boss,测你有多了解海南!12306验证码算什么啦~