多窗口传递信号,无边框移动,12306验证码,pyqt5
admin
2023-07-16 11:43:16
0

多窗口传递信号,无边框移动,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_())

多窗口传递信号,无边框移动,12306验证码,pyqt5
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

相关内容

热门资讯

粉笔张小龙,犯了众怒 在讲台上荒诞“暴走”的张小龙,并不令人意外。6月3日,粉笔创始人张小龙作为主讲嘉宾,应邀出席一所大学...
民进党前秘书长欠台糖公司1.7... 【环球网报道】据台湾中时新闻网报道,民进党前秘书长吴乃仁在担任台糖公司董事长期间,涉及贱卖台糖土地案...
3岁小孩不知妈妈去世,因想念每... “妈妈去国外工作了,很爱你们,只是暂时回不了家。”面对三岁大宝日复一日的寻母思念,湖北武汉的李先生只...
内塔尼亚胡险遭无人机袭击,以媒... 尽管黎以停火协议已达成并开始实施,但零星交火仍在持续。以色列总理内塔尼亚胡刚离开北部边境地区,疑似真...
美媒:拜登家族不肯消失,民主党... 美国将于今年年底举行中期选举,民主党人有望夺回众议院。然而拜登家族的高调举动,使得民主党再次分心,一...
对日本新型军国主义的“新型抗战... 【文/观察者网专栏作者 江宇舟】日本这几个月的对华行为,已经是全方位的恶声、恶气、恶行、恶法:自卫队...
“这里没有口号,只有实干”——... 在黄河科技学院,有这样一个地方:没有惊天动地的口号,没有花里胡哨的“形象工程”,有的只是实验室里彻夜...
AI决定6G成败关键? 专家称... 中经记者 陈佳岚 广州报道 “6G与AI的增强融合,这部分OPPO是全力投入的。而与AI的融合,也是...
自贡:“智造”为核,无人车跑出... 盐都初夏清晨,和勤劳的人们一同早起的,还有一辆辆造型新颖的无人配送车、清扫作业车。市民杨先生对此颇有...
黄仁勋不装了:所有芯片市场我全... 来源:市场资讯 (来源:科技头版) 英伟达要当AI时代唯一的王。 出品 | 科技头版 作者 | 青...