欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
【PyQt5

QProgressBar 進(jìn)度條+QSplashScreen 啟動(dòng)界面

 

知識點(diǎn):

1、進(jìn)度條

#將進(jìn)度條的最大值、最小值設置為相同時(shí),產(chǎn)生跑馬燈效果self.progressBar.setMinimum(0)self.progressBar.setMaximum(0)

一些關(guān)于進(jìn)度條的補充知識點(diǎn):

Qt提供了兩種顯示進(jìn)度條的方式,一種是QProgressBar,另一種是QProgressDialog,QProgressBar類(lèi)提供了種橫向或縱向顯示進(jìn)度條的控件表示方式,用來(lái)描述任務(wù)的完成情況。QProgressDialog類(lèi)提供了一種針對慢速過(guò)程的進(jìn)度對話(huà)框表示方式,用于描述任務(wù)完成的進(jìn)度情況。標準的進(jìn)度條對話(huà)框包括一個(gè)進(jìn)度顯示條,一個(gè)取消按鈕以及一個(gè)標簽。QProgressBar有幾個(gè)重要的屬性值,minimum,maximum決定進(jìn)度條提示的最小值和最大值,format決定進(jìn)度條顯示文字的格式,可以有3種顯示格式:%p%,%v,%m。%p%顯示完成的百分比,這是默認顯示方式;%v顯示當前的進(jìn)度值;%m顯示總的步進(jìn)值。invertedAppearance屬性可以讓進(jìn)度條以反方向顯示進(jìn)度。QProgressDialog也有幾個(gè)重要的屬性值,決定了進(jìn)度條對話(huà)框何時(shí)出現,出現多長(cháng)時(shí)間,分別是minimum,maximum和minimumDuration。minimum和maximum分別表示進(jìn)度條的最小值和最大值,決定了進(jìn)度條的變化范圍,minimumDuration為進(jìn)度條對話(huà)框出現前的等待時(shí)間。系統根據所需完成的工作量估算一個(gè)預計花費的時(shí)間,若大于設定的等待時(shí)間minimumDuration,則出現進(jìn)度條對話(huà)框;若小于設定的等待時(shí)間,則不出現進(jìn)度條對話(huà)框。進(jìn)度條使用了一個(gè)步進(jìn)值的概念,即一時(shí)設置好進(jìn)度條的最大值和最小值,進(jìn)度條將會(huì )顯示完成的步進(jìn)值占總的步進(jìn)值的百分比,百分比的計算公式為:百分比=(value()-minimum())/(maximum()-minimum())

本例具體實(shí)現代碼如下:

 1 # -*- coding: utf-8 -*-    2 from PyQt4.QtGui import *   3 from PyQt4.QtCore import *   4 import sys   5    6 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))   7     8 class Progess(QDialog):   9     def __init__(self,parent=None):  10         super(Progess,self).__init__(parent)  11         self.setWindowTitle(self.tr("使用進(jìn)度條"))  12         numLabel=QLabel(self.tr("文件數目"))  13         self.numLineEdit=QLineEdit("10")  14         typeLabel=QLabel(self.tr("顯示類(lèi)型"))  15         self.typeComboBox=QComboBox()  16         self.typeComboBox.addItem(self.tr("進(jìn)度條"))  17         self.typeComboBox.addItem(self.tr("進(jìn)度對話(huà)框"))  18   19         self.progressBar=QProgressBar()  20   21         startPushButton=QPushButton(self.tr("開(kāi)始"))  22   23         layout=QGridLayout()  24         layout.addWidget(numLabel,0,0)  25         layout.addWidget(self.numLineEdit,0,1)  26         layout.addWidget(typeLabel,1,0)  27         layout.addWidget(self.typeComboBox,1,1)  28         layout.addWidget(self.progressBar,2,0,1,2)  29         layout.addWidget(startPushButton,3,1)  30         layout.setMargin(15)  31         layout.setSpacing(10)  32   33         self.setLayout(layout)  34           35         self.connect(startPushButton,SIGNAL("clicked()"),self.slotStart)  36   37     def slotStart(self):  38         num=int(self.numLineEdit.text())  39   40         if self.typeComboBox.currentIndex()==0:  41             self.progressBar.setMinimum(0)  42             self.progressBar.setMaximum(num)  43   44             for i in range(num):  45                 self.progressBar.setValue(i)  46                 QThread.msleep(100)  47   48         elif self.typeComboBox.currentIndex()==1:  49             progressDialog=QProgressDialog(self)  50             progressDialog.setWindowModality(Qt.WindowModal)  51             progressDialog.setMinimumDuration(5)  52             progressDialog.setWindowTitle(self.tr("請等待"))  53             progressDialog.setLabelText(self.tr("拷貝..."))  54             progressDialog.setCancelButtonText(self.tr("取消"))  55             progressDialog.setRange(0,num)  56   57             for i in range(num):  58                 progressDialog.setValue(i)  59                 QThread.msleep(100)  60                 if progressDialog.wasCanceled():  61                     return  62                   63 app=QApplication(sys.argv)  64 progess=Progess()  65 progess.show()  66 app.exec_()  

案例解析:

第38行獲得當前需要復制的文件數目,這里對應進(jìn)度條的總的步進(jìn)值。第40-46行采用進(jìn)度條的方式顯示進(jìn)度。第41,42行設置進(jìn)度條的步進(jìn)范圍從0到需要復制的文件數目。第45,46行模擬每一個(gè)文件的復制過(guò)程,這里通過(guò)QThread.msleep(100)來(lái)模擬,在實(shí)際中使用文件復制過(guò)程來(lái)替換,進(jìn)度條的總的步進(jìn)值為需要復制的文件數目,當復制完成一個(gè)文件后,步進(jìn)值增加1。第48-61行采用進(jìn)度對話(huà)框的方式顯示進(jìn)度。第49行創(chuàng  )建一個(gè)進(jìn)度對話(huà)框。第50行設置進(jìn)度對話(huà)框采用模態(tài)方式進(jìn)行顯示,即顯示進(jìn)度的同時(shí),其他窗口將不響應輸入信號。第51 行設置進(jìn)度對話(huà)框出現等待時(shí)間,此處設定為5秒,默認為4秒。第52-54行設置進(jìn)度對話(huà)框的窗體標題,顯示文字信息以及取消按鈕的顯示文字。第55行設置進(jìn)度對話(huà)框的步進(jìn)范圍。第57-61行模擬每一個(gè)文件復制過(guò)程,這里通過(guò)QThread.msleep(100)進(jìn)行模擬,在實(shí)際中使用文件復制過(guò)程來(lái)替換,進(jìn)度條的總的步進(jìn)值為需要復制的文件數目,當復制完一個(gè)文件后,步進(jìn)值增加1,這里需要使用processEvents()來(lái)正常響應事件循環(huán),以確保應用程序不會(huì )出現阻塞。第60,61行檢測“取消”按鈕是否被觸發(fā),若觸發(fā)則退出循環(huán)并關(guān)閉進(jìn)度對話(huà)框,在實(shí)際應用中,此處還需進(jìn)行相關(guān)的清理工作。進(jìn)度對話(huà)框的使用有兩種方法,即模態(tài)方式與非模態(tài)方式。本實(shí)例中使用的是模態(tài)方式,模態(tài)方式的使用比較簡(jiǎn)單方便,但必須使用processEvents來(lái)使事件循環(huán)保持正常進(jìn)行狀態(tài),從而確保應用不會(huì )阻塞。若使用非模態(tài)方式,則需要通過(guò)QTime來(lái)實(shí)現定時(shí)設置進(jìn)度條的值。

 

 

UI文件

 

# -*- coding: utf-8 -*-from PyQt5.QtCore import pyqtSlot, QBasicTimer,Qtfrom PyQt5.QtWidgets import QDialog,QSplashScreenfrom Ui_processbar1 import Ui_windows2class windows2(QDialog, Ui_windows2):    def __init__(self, parent=None):        super(windows2, self).__init__(parent)        self.setupUi(self)        # 創(chuàng  )建一個(gè)定時(shí)器對象,默認開(kāi)始為0        self.timer = QBasicTimer()        self.step = 0    @pyqtSlot()    def on_pushButton_clicked(self):        if self.timer.isActive():             self.timer.stop()            self.pushButton.setText('開(kāi)始')        else:            self.timer.start(100, self)            self.pushButton.setText('暫停')    def timerEvent(self, event):        if self.step >= 100:            self.timer.stop()            return        self.step = self.step + 1        self.progressBar.setValue(self.step)    @pyqtSlot()    def on_pushButton_2_clicked(self):        self.timer.stop()        self.progressBar.setValue(0)        @pyqtSlot()    def on_pushButton_3_clicked(self):        for i in range(100):            self.progressBar_2.setValue(i)            time.sleep(0.1)    @pyqtSlot()    def on_pushButton_4_clicked(self):        self.progressBar_2.setValue(0)    @pyqtSlot()    def on_pushButton_5_clicked(self):        self.progressBar_5.setMaximum(0)        self.progressBar_7.setMaximum(0)        self.progressBar_4.setMaximum(0)        self.progressBar_6.setMaximum(0)    @pyqtSlot()    def on_pushButton_6_clicked(self):        self.progressBar_4.setMaximum(1)        self.progressBar_5.setMaximum(1)        self.progressBar_6.setMaximum(1)        self.progressBar_7.setMaximum(1)if __name__ == "__main__":    import sys, time,PyQt5    app = PyQt5.QtWidgets.QApplication(sys.argv)    #定義QSplashScreen 插入啟動(dòng)頁(yè)背景圖    splash = QSplashScreen(PyQt5.QtGui.QPixmap("splash.jpg"))    splash.show()    #定義字體格式    font = PyQt5.QtGui.QFont()    font.setPointSize(16)    font.setBold(True)    font.setWeight(75)    splash.setFont(font)    splash.showMessage("正在加載。。。",Qt.AlignCenter,Qt.red,)    time.sleep(1)    splash.showMessage("渲染圖片。。。", Qt.AlignCenter, Qt.red)    time.sleep(1)    # 設置進(jìn)程,啟動(dòng)加載頁(yè)面時(shí)可以進(jìn)行其他操作而不會(huì )卡死    app.processEvents()    ui = windows2()    ui.show()    # 結束啟動(dòng)頁(yè)    splash.finish(ui)    sys.exit(app.exec_())

 

 

 

補充知識點(diǎn):

dir(PyQt5.QtCore))    #返回PyQt5.QtCore 的所有方法,是列表類(lèi)型

help(PyQt5.QtCore.QTime)    #使用help()方法查看PyQt5.QtCore.QTime 如何使用

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
python使用Qt界面以及邏輯實(shí)現
多式樣ProgressBar
Python GUI教程(十一):使用多線(xiàn)程保持GUI的響應
PyQt 界面控件常用積累
Python應用:使用PyQT制作視頻播放器
【pyqt5學(xué)習】
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久