多窗口傳遞信號,無邊框移動,12306驗證碼,pyqt5
阿新 • • 發佈:2018-11-20
init true rom try login code decode one mouse
Form1:
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