日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pyqt5讲解9:时间模块timer和网页交互

發(fā)布時(shí)間:2024/9/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyqt5讲解9:时间模块timer和网页交互 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

time

如果要在應(yīng)用程序中周期性地進(jìn)行某項(xiàng)操作,則需要用到QTimer定時(shí)器,QTimer類提供了重復(fù)的和單次的定時(shí)器。要使用定時(shí)器,需要先創(chuàng)建一個(gè)QTimer實(shí)例,將其timeout信號(hào)連接到相應(yīng)的槽,并調(diào)用start()。然后定時(shí)器會(huì)以恒定的間隔發(fā)出timeout信號(hào),當(dāng)窗口控件收到timeout信號(hào)后,它就會(huì)停止這個(gè)定時(shí)器。

常用方法

方法描述
start(milliseconds)啟動(dòng)或重新啟動(dòng)定時(shí)器,時(shí)間間隔為毫秒。如果定時(shí)器已經(jīng)運(yùn)行,它將被停止并重新啟動(dòng)。如果singleShot信號(hào)為真,定時(shí)器將僅被激活一次
Stop()停止定時(shí)器

常用信號(hào)

方法描述
singleShot在給定的時(shí)間間隔后調(diào)用一個(gè)槽函數(shù)時(shí)發(fā)射此信號(hào)
timeout當(dāng)定時(shí)器超時(shí)時(shí)發(fā)射此信號(hào)

算例1

# -*- coding: utf-8 -*- '''【簡(jiǎn)介】PyQT5中 QTimer例子'''from PyQt5.QtWidgets import QWidget, QPushButton , QApplication ,QListWidget, QGridLayout , QLabel from PyQt5.QtCore import QTimer ,QDateTime import sys class WinForm(QWidget): def __init__(self,parent=None): super(WinForm,self).__init__(parent) self.setWindowTitle("QTimer demo")self.listFile= QListWidget() self.label = QLabel('顯示當(dāng)前時(shí)間')self.startBtn = QPushButton('開始') self.endBtn = QPushButton('結(jié)束') layout = QGridLayout(self) # 初始化一個(gè)定時(shí)器self.timer = QTimer(self)# showTime()方法self.timer.timeout.connect(self.showTime)layout.addWidget(self.label,0,0,1,2) layout.addWidget(self.startBtn,1,0) layout.addWidget(self.endBtn,1,1) self.startBtn.clicked.connect( self.startTimer) self.endBtn.clicked.connect( self.endTimer) self.setLayout(layout) def showTime(self): # 獲取系統(tǒng)現(xiàn)在的時(shí)間time = QDateTime.currentDateTime() # 設(shè)置系統(tǒng)時(shí)間顯示格式timeDisplay = time.toString("yyyy-MM-dd hh:mm:ss dddd");# 在標(biāo)簽上顯示時(shí)間self.label.setText( timeDisplay ) def startTimer(self): # 設(shè)置計(jì)時(shí)間隔并啟動(dòng)self.timer.start(1000)self.startBtn.setEnabled(False)self.endBtn.setEnabled(True)def endTimer(self): self.timer.stop()self.startBtn.setEnabled(True)self.endBtn.setEnabled(False)if __name__ == "__main__": app = QApplication(sys.argv) form = WinForm() form.show() sys.exit(app.exec_())

會(huì)一直不斷的更新時(shí)間

首先初始化一個(gè)定時(shí)器,把定時(shí)器的timeout信號(hào)與showTime()槽函數(shù)連接起來

self.timer=QTimer(self)
self.timer.timeout.connect(self.showTime)

使用連接的槽函數(shù)顯示當(dāng)前時(shí)間,并在標(biāo)簽上顯示系統(tǒng)當(dāng)前的時(shí)間

def showTime(self):
#獲取系統(tǒng)當(dāng)前時(shí)間
time=QDateTime.currentDateTime()
#設(shè)置系統(tǒng)時(shí)間的顯示格式
timeDisplay=time.toString(‘yyyy-MM-dd hh:mm:ss dddd’)
#在標(biāo)簽上顯示時(shí)間
self.lable.setText(timeDisplay)

單擊開始按鈕,啟動(dòng)定時(shí)器,并使按鈕失效

#設(shè)置時(shí)間間隔并啟動(dòng)定時(shí)器
self.timer.start(1000)
#設(shè)置開始按鈕不可點(diǎn)擊,結(jié)束按鈕可點(diǎn)擊
self.startBtn.setEnabled(False)
self.endBtn.setEnabled(True)

單擊結(jié)束按鈕,停止定時(shí)器,并使按鈕失效

#停止定時(shí)器
self.timer.stop()
#結(jié)束按鈕不可點(diǎn)擊,開始按鈕可以點(diǎn)擊
self.startBtn.setEnabled(True)
self.endBtn.setEnabled(False)

# -*- coding: utf-8 -*- '''【簡(jiǎn)介】PyQT5中關(guān)閉應(yīng)用例子'''import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import *if __name__ == '__main__':app = QApplication(sys.argv)label = QLabel("<font color=red size=128><b>Hello PyQT,窗口會(huì)在10秒后消失!</b></font>")label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint)label.show()# 設(shè)置10s后自動(dòng)退出QTimer.singleShot(10000, app.quit) sys.exit(app.exec_())

10秒后窗口消失

彈出的窗口會(huì)在10秒后消失,模仿程序的啟動(dòng)界面,將彈出的窗口設(shè)置為無邊框

#設(shè)置無邊框窗口
label.setWindowFlags(Qt.SplashScreen|Qt.FramelessWindowHint)

使用QTimer設(shè)置時(shí)間間隔,10秒后退出程序

#設(shè)置10秒后自動(dòng)退出
QTimer.singleShot(10000,app.quit)

網(wǎng)頁交互

PyQt5 使用 QWebEngineView 控件來展示 HTML 頁面,WebEngine 框架時(shí)基于谷歌的 Chromium 引擎開發(fā)。

QWebEngine 類常用方法如下:

方法描述
load(QUrl url)加載指定的 URL 并顯示
setHtml(QString &html)將網(wǎng)頁視圖的內(nèi)容設(shè)置為指定的 HTML 內(nèi)容

注意事項(xiàng)
說明下 如果算例出現(xiàn)錯(cuò)誤

from PyQt5.QtWebEngineWidgets import *
ImportError: DLL load failed: 找不到指定的程序。

則需要先安裝下PyQtWebEngine

pip install PyQtWebEngin

算例1

#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: yudengwu # @Date : 2020/8/31import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *from PyQt5.QtWebEngineWidgets import * class MainWindow(QMainWindow):def __init__(self):super(MainWindow, self).__init__()self.setWindowTitle('WebViewTest')#self.setWindowIcon(QIcon("./images/Python2.ico"))self.setGeometry(5, 30, 1355, 730)self.browser = QWebEngineView()# 加載外部的 Web 頁面self.browser.load(QUrl('https://blog.csdn.net/KOBEYU652453'))self.setCentralWidget(self.browser)if __name__ == "__main__":app = QApplication(sys.argv)win = MainWindow()win.show()sys.exit(app.exec_())

算例2

# -*- coding: utf-8 -*-'''【簡(jiǎn)介】QWebEngineView 打開本地網(wǎng)頁例子'''from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtWebEngineWidgets import * import sysclass MainWindow(QMainWindow):def __init__(self):super(QMainWindow, self).__init__()self.setWindowTitle('加載并顯示本地頁面例子')self.setGeometry(5, 30, 755, 530)self.browser = QWebEngineView()# 加載本地頁面url = r'D:/deeplearn/學(xué)習(xí)草稿/index.html'self.browser.load(QUrl(url))self.setCentralWidget(self.browser)if __name__ == '__main__':app = QApplication(sys.argv)win = MainWindow()win.show()sys.exit(app.exec_())

index.html

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Test</title> </head> <body><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1> </body> </html>

算例3

# -*- coding: utf-8 -*- '''【簡(jiǎn)介】QWebView打開網(wǎng)頁例子 '''from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtWebEngineWidgets import * import sysclass MainWindow(QMainWindow):def __init__(self ):super(QMainWindow, self).__init__()self.setWindowTitle('QWebView打開網(wǎng)頁例子')self.setGeometry(5, 30, 1355, 730)self.browser = QWebEngineView()#1 加載html代碼self.browser = QWebEngineView()self.browser.setHtml('''<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title></head><body><h1>Hello PyQt5</h1><h1>Hello PyQt5</h1><h1>hello PyQt5</h1><h1>hello PyQt5</h1><h1>hello PyQt5</h1><h1>Hello PyQt5</h1></body></html>''')self.setCentralWidget(self.browser)if __name__ == '__main__':app = QApplication(sys.argv)win = MainWindow()win.show()sys.exit(app.exec_())

算例4

# -*- coding: utf-8 -*- '''【簡(jiǎn)介】QWebView中網(wǎng)頁調(diào)用JavaScript '''from PyQt5.QtWidgets import QApplication , QWidget , QVBoxLayout , QPushButton from PyQt5.QtWebEngineWidgets import QWebEngineView import sys# 創(chuàng)建一個(gè) application實(shí)例 app = QApplication(sys.argv) win = QWidget() win.setWindowTitle('Web頁面中的JavaScript與 QWebEngineView交互例子')# 創(chuàng)建一個(gè)垂直布局器 layout = QVBoxLayout() win.setLayout(layout)# 創(chuàng)建一個(gè) QWebEngineView 對(duì)象 view = QWebEngineView() view.setHtml('''<html><head><title>A Demo Page</title><script language="javascript">// Completes the full-name control and// shows the submit buttonfunction completeAndReturnName() {var fname = document.getElementById('fname').value;var lname = document.getElementById('lname').value;var full = fname + ' ' + lname;document.getElementById('fullname').value = full;document.getElementById('submit-btn').style.display = 'block';return full;}</script></head><body><form><label for="fname">First name:</label><input type="text" name="fname" id="fname"></input><br /><label for="lname">Last name:</label><input type="text" name="lname" id="lname"></input><br /><label for="fullname">Full name:</label><input disabled type="text" name="fullname" id="fullname"></input><br /><input style="display: none;" type="submit" id="submit-btn"></input></form></body></html> ''')# 創(chuàng)建一個(gè)按鈕去調(diào)用 JavaScript代碼 button = QPushButton('設(shè)置全名')def js_callback(result):print(result)def complete_name():view.page().runJavaScript('completeAndReturnName();', js_callback)# 按鈕連接 'complete_name'槽,當(dāng)點(diǎn)擊按鈕是會(huì)觸發(fā)信號(hào) button.clicked.connect(complete_name)# 把QWebView和button加載到layout布局中 layout.addWidget(view) layout.addWidget(button)# 顯示窗口和運(yùn)行app win.show() sys.exit(app.exec_())


電氣工程的計(jì)算機(jī)萌新,寫博文不容易。如果你覺得本文對(duì)你有用,請(qǐng)點(diǎn)個(gè)贊支持下,謝謝。

總結(jié)

以上是生活随笔為你收集整理的pyqt5讲解9:时间模块timer和网页交互的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。