[{"data":1,"prerenderedAt":3364},["ShallowReactive",2],{"post-2025-09-01-pyqt5":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"body":15,"_type":3358,"_id":3359,"_source":3360,"_file":3361,"_stem":3362,"_extension":3363},"\u002Fblog\u002F2025-09-01-pyqt5","blog",false,"","PyQt5-进度条类控件","PyQt5进度条类控件详解：ProgressBar、Slider、Dial等进度与调节控件。","2025-09-01",[12,13,14],"Python","PyQt5","GUI",{"type":16,"children":17,"toc":3351},"root",[18,35,49,53,63,95,465,483,495,504,526,534,584,1430,1488,1493,1501,1529,1537,1543,1546,1565,1573,1581,1616,2177,2229,2250,2258,2270,2273,2309,2319,2521,2531,2609,2629,2637,2708,3258,3299,3311,3321,3329,3337,3345],{"type":19,"tag":20,"props":21,"children":22},"element","p",{},[23,26,33],{"type":24,"value":25},"text","进度条类控件主要显示任务的执行进度，PyQt5中提供了进度条控件和滑块控件这两种类型的进度条类控件。其中，进度条控件是通常所看到的进度条，用",{"type":19,"tag":27,"props":28,"children":30},"code",{"className":29},[],[31],{"type":24,"value":32},"ProgressBar",{"type":24,"value":34},"控件表示；而滑块控件是以刻度线的形式出现。本节将对PyQt5中的进度条类控件进行详细讲解。",{"type":19,"tag":36,"props":37,"children":39},"h2",{"id":38},"_1progressbar进度条",[40,42,47],{"type":24,"value":41},"1  ",{"type":19,"tag":27,"props":43,"children":45},{"className":44},[],[46],{"type":24,"value":32},{"type":24,"value":48},"：进度条",{"type":19,"tag":50,"props":51,"children":52},"hr",{},[],{"type":19,"tag":20,"props":54,"children":55},{},[56,61],{"type":19,"tag":27,"props":57,"children":59},{"className":58},[],[60],{"type":24,"value":32},{"type":24,"value":62},"控件表示进度条，通常在执行长时间任务时，用进度条告诉用户当前的进展情况。",{"type":19,"tag":20,"props":64,"children":65},{},[66,71,73,79,81,86,88,93],{"type":19,"tag":27,"props":67,"children":69},{"className":68},[],[70],{"type":24,"value":32},{"type":24,"value":72},"控件对应PyQt5中的",{"type":19,"tag":27,"props":74,"children":76},{"className":75},[],[77],{"type":24,"value":78},"QProgressBar",{"type":24,"value":80},"类，它其实就是",{"type":19,"tag":27,"props":82,"children":84},{"className":83},[],[85],{"type":24,"value":78},{"type":24,"value":87},"类的一个对象。",{"type":19,"tag":27,"props":89,"children":91},{"className":90},[],[92],{"type":24,"value":78},{"type":24,"value":94},"类的常用方法及说明如表所示。",{"type":19,"tag":96,"props":97,"children":98},"table",{},[99,125],{"type":19,"tag":100,"props":101,"children":102},"thead",{},[103],{"type":19,"tag":104,"props":105,"children":106},"tr",{},[107,117],{"type":19,"tag":108,"props":109,"children":110},"th",{},[111],{"type":19,"tag":112,"props":113,"children":114},"strong",{},[115],{"type":24,"value":116},"方    法",{"type":19,"tag":108,"props":118,"children":119},{},[120],{"type":19,"tag":112,"props":121,"children":122},{},[123],{"type":24,"value":124},"说    明",{"type":19,"tag":126,"props":127,"children":128},"tbody",{},[129,143,156,169,182,220,305,342,371,384,413,426,439,452],{"type":19,"tag":104,"props":130,"children":131},{},[132,138],{"type":19,"tag":133,"props":134,"children":135},"td",{},[136],{"type":24,"value":137},"setMinimum()",{"type":19,"tag":133,"props":139,"children":140},{},[141],{"type":24,"value":142},"设置进度条的最小值，默认值为0",{"type":19,"tag":104,"props":144,"children":145},{},[146,151],{"type":19,"tag":133,"props":147,"children":148},{},[149],{"type":24,"value":150},"setMaximum()",{"type":19,"tag":133,"props":152,"children":153},{},[154],{"type":24,"value":155},"设置进度条的最大值，默认值为99",{"type":19,"tag":104,"props":157,"children":158},{},[159,164],{"type":19,"tag":133,"props":160,"children":161},{},[162],{"type":24,"value":163},"setRange()",{"type":19,"tag":133,"props":165,"children":166},{},[167],{"type":24,"value":168},"设置进度条的取值范围，相当于setMinimum()和setMaximum()方法的结合",{"type":19,"tag":104,"props":170,"children":171},{},[172,177],{"type":19,"tag":133,"props":173,"children":174},{},[175],{"type":24,"value":176},"setValue()",{"type":19,"tag":133,"props":178,"children":179},{},[180],{"type":24,"value":181},"设置进度条的当前值",{"type":19,"tag":104,"props":183,"children":184},{},[185,190],{"type":19,"tag":133,"props":186,"children":187},{},[188],{"type":24,"value":189},"setFormat()",{"type":19,"tag":133,"props":191,"children":192},{},[193,195,199,202,204,207,210,212,215,218],{"type":24,"value":194},"设置进度条的文字显示格式，有以下3种格式：",{"type":19,"tag":196,"props":197,"children":198},"br",{},[],{"type":19,"tag":196,"props":200,"children":201},{},[],{"type":24,"value":203},"◆ %p%：显示完成的百分比，默认格式",{"type":19,"tag":196,"props":205,"children":206},{},[],{"type":19,"tag":196,"props":208,"children":209},{},[],{"type":24,"value":211},"◆ %v：显示当前的进度值",{"type":19,"tag":196,"props":213,"children":214},{},[],{"type":19,"tag":196,"props":216,"children":217},{},[],{"type":24,"value":219},"◆ %m：显示总的步长值",{"type":19,"tag":104,"props":221,"children":222},{},[223,228],{"type":19,"tag":133,"props":224,"children":225},{},[226],{"type":24,"value":227},"setAlignment()",{"type":19,"tag":133,"props":229,"children":230},{},[231,233,236,239,241,244,247,249,252,255,257,260,263,265,268,271,273,276,279,281,284,287,289,292,295,297,300,303],{"type":24,"value":232},"设置对齐方式，有水平和垂直两种，分别如下：",{"type":19,"tag":196,"props":234,"children":235},{},[],{"type":19,"tag":196,"props":237,"children":238},{},[],{"type":24,"value":240},"◆ 水平对齐方式：",{"type":19,"tag":196,"props":242,"children":243},{},[],{"type":19,"tag":196,"props":245,"children":246},{},[],{"type":24,"value":248},"■  Qt.AlignLeft：左对齐",{"type":19,"tag":196,"props":250,"children":251},{},[],{"type":19,"tag":196,"props":253,"children":254},{},[],{"type":24,"value":256},"■  Qt.AlignHCenter：水平居中对齐",{"type":19,"tag":196,"props":258,"children":259},{},[],{"type":19,"tag":196,"props":261,"children":262},{},[],{"type":24,"value":264},"■  Qt.AlignRight：右对齐",{"type":19,"tag":196,"props":266,"children":267},{},[],{"type":19,"tag":196,"props":269,"children":270},{},[],{"type":24,"value":272},"■  Qt.AlignJustify：两端对齐",{"type":19,"tag":196,"props":274,"children":275},{},[],{"type":19,"tag":196,"props":277,"children":278},{},[],{"type":24,"value":280},"◆ 垂直对齐方式：",{"type":19,"tag":196,"props":282,"children":283},{},[],{"type":19,"tag":196,"props":285,"children":286},{},[],{"type":24,"value":288},"■  Qt.AlignTop：顶部对齐",{"type":19,"tag":196,"props":290,"children":291},{},[],{"type":19,"tag":196,"props":293,"children":294},{},[],{"type":24,"value":296},"■  Qt.AlignVCenter：垂直居中",{"type":19,"tag":196,"props":298,"children":299},{},[],{"type":19,"tag":196,"props":301,"children":302},{},[],{"type":24,"value":304},"■  Qt.AlignBottom：底部对齐",{"type":19,"tag":104,"props":306,"children":307},{},[308,313],{"type":19,"tag":133,"props":309,"children":310},{},[311],{"type":24,"value":312},"setLayoutDirection()",{"type":19,"tag":133,"props":314,"children":315},{},[316,318,321,324,326,329,332,334,337,340],{"type":24,"value":317},"设置进度条的布局方向，支持以下3个方向值：",{"type":19,"tag":196,"props":319,"children":320},{},[],{"type":19,"tag":196,"props":322,"children":323},{},[],{"type":24,"value":325},"◆ Qt.LeftToRight：从左至右",{"type":19,"tag":196,"props":327,"children":328},{},[],{"type":19,"tag":196,"props":330,"children":331},{},[],{"type":24,"value":333},"◆ Qt.RightToLeft：从右至左",{"type":19,"tag":196,"props":335,"children":336},{},[],{"type":19,"tag":196,"props":338,"children":339},{},[],{"type":24,"value":341},"◆ Qt.LayoutDirectionAuto：跟随布局方向自动调整",{"type":19,"tag":104,"props":343,"children":344},{},[345,350],{"type":19,"tag":133,"props":346,"children":347},{},[348],{"type":24,"value":349},"setOrientation()",{"type":19,"tag":133,"props":351,"children":352},{},[353,355,358,361,363,366,369],{"type":24,"value":354},"设置进度条的显示方向，有以下两个方向：",{"type":19,"tag":196,"props":356,"children":357},{},[],{"type":19,"tag":196,"props":359,"children":360},{},[],{"type":24,"value":362},"◆ Qt.Horizontal：水平方向",{"type":19,"tag":196,"props":364,"children":365},{},[],{"type":19,"tag":196,"props":367,"children":368},{},[],{"type":24,"value":370},"◆ Qt.Vertical：垂直方向",{"type":19,"tag":104,"props":372,"children":373},{},[374,379],{"type":19,"tag":133,"props":375,"children":376},{},[377],{"type":24,"value":378},"setInvertedAppearance()",{"type":19,"tag":133,"props":380,"children":381},{},[382],{"type":24,"value":383},"设置进度条是否以反方向显示进度",{"type":19,"tag":104,"props":385,"children":386},{},[387,392],{"type":19,"tag":133,"props":388,"children":389},{},[390],{"type":24,"value":391},"setTextDirection()",{"type":19,"tag":133,"props":393,"children":394},{},[395,397,400,403,405,408,411],{"type":24,"value":396},"设置进度条的文本显示方向，有以下两个方向：",{"type":19,"tag":196,"props":398,"children":399},{},[],{"type":19,"tag":196,"props":401,"children":402},{},[],{"type":24,"value":404},"◆ QProgressBar.TopToBottom：从上到下",{"type":19,"tag":196,"props":406,"children":407},{},[],{"type":19,"tag":196,"props":409,"children":410},{},[],{"type":24,"value":412},"◆ QProgressBar.BottomToTop：从下到上",{"type":19,"tag":104,"props":414,"children":415},{},[416,421],{"type":19,"tag":133,"props":417,"children":418},{},[419],{"type":24,"value":420},"setProperty()",{"type":19,"tag":133,"props":422,"children":423},{},[424],{"type":24,"value":425},"对进度条的属性进行设置，可以是任何属性，比如，self.progressBar.setProperty(\"value\", 24)",{"type":19,"tag":104,"props":427,"children":428},{},[429,434],{"type":19,"tag":133,"props":430,"children":431},{},[432],{"type":24,"value":433},"minimum()",{"type":19,"tag":133,"props":435,"children":436},{},[437],{"type":24,"value":438},"获取进度条的最小值",{"type":19,"tag":104,"props":440,"children":441},{},[442,447],{"type":19,"tag":133,"props":443,"children":444},{},[445],{"type":24,"value":446},"maximum()",{"type":19,"tag":133,"props":448,"children":449},{},[450],{"type":24,"value":451},"获取进度条的最大值",{"type":19,"tag":104,"props":453,"children":454},{},[455,460],{"type":19,"tag":133,"props":456,"children":457},{},[458],{"type":24,"value":459},"value()",{"type":19,"tag":133,"props":461,"children":462},{},[463],{"type":24,"value":464},"获取进度条的当前值",{"type":19,"tag":20,"props":466,"children":467},{},[468,473,475,481],{"type":19,"tag":27,"props":469,"children":471},{"className":470},[],[472],{"type":24,"value":32},{"type":24,"value":474},"控件中最常用的信号是",{"type":19,"tag":27,"props":476,"children":478},{"className":477},[],[479],{"type":24,"value":480},"valueChanged",{"type":24,"value":482},"，在进度条的值发生改变时发射。",{"type":19,"tag":20,"props":484,"children":485},{},[486,488,493],{"type":24,"value":487},"通过对",{"type":19,"tag":27,"props":489,"children":491},{"className":490},[],[492],{"type":24,"value":32},{"type":24,"value":494},"控件的显示方向、对齐方式、布局方向等进行设置，该控件可以支持4种水平进度条显示方式和两种垂直进度条显示方式，它们的效果如图所示，用户可以根据自身需要选择适合自己的显示方式。",{"type":19,"tag":20,"props":496,"children":497},{},[498],{"type":19,"tag":499,"props":500,"children":503},"img",{"alt":501,"src":502},"Pasted image 20250901205656","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901205656.png",[],{"type":19,"tag":505,"props":506,"children":507},"blockquote",{},[508],{"type":19,"tag":20,"props":509,"children":510},{},[511,516,518,524],{"type":19,"tag":112,"props":512,"children":513},{},[514],{"type":24,"value":515},"Tip:",{"type":24,"value":517}," 多学两招\n如果最小值和最大值都设置为",{"type":19,"tag":27,"props":519,"children":521},{"className":520},[],[522],{"type":24,"value":523},"0",{"type":24,"value":525},"，那么进度条会显示为一个不断循环滚动的繁忙进度，而不是步骤中显示的百分比。",{"type":19,"tag":20,"props":527,"children":528},{},[529],{"type":19,"tag":112,"props":530,"children":531},{},[532],{"type":24,"value":533},"实例 模拟一个跑马灯效果",{"type":19,"tag":20,"props":535,"children":536},{},[537,539,544,546,552,554,560,562,567,569,574,576,582],{"type":24,"value":538},"打开Qt Designer设计器，创建一个窗口，并向窗口中添加4个",{"type":19,"tag":27,"props":540,"children":542},{"className":541},[],[543],{"type":24,"value":32},{"type":24,"value":545},"控件和一个",{"type":19,"tag":27,"props":547,"children":549},{"className":548},[],[550],{"type":24,"value":551},"PushButton",{"type":24,"value":553},"控件，然后将该窗口转换为",{"type":19,"tag":27,"props":555,"children":557},{"className":556},[],[558],{"type":24,"value":559},".py",{"type":24,"value":561},"文件，在",{"type":19,"tag":27,"props":563,"children":565},{"className":564},[],[566],{"type":24,"value":559},{"type":24,"value":568},"文件中对进度条和",{"type":19,"tag":27,"props":570,"children":572},{"className":571},[],[573],{"type":24,"value":551},{"type":24,"value":575},"按钮的",{"type":19,"tag":27,"props":577,"children":579},{"className":578},[],[580],{"type":24,"value":581},"clicked信号",{"type":24,"value":583},"进行绑定，代码如下：",{"type":19,"tag":585,"props":586,"children":590},"pre",{"className":587,"code":588,"language":589,"meta":7,"style":7},"language-python shiki shiki-themes github-dark","from PyQt5 import QtCore, QtGui, QtWidgets  \n  \nclass Ui_MainWindow(object):  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(305, 259)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)  \n        self.progressBar.setGeometry(QtCore.QRect(50, 10, 201, 31))  \n        self.progressBar.setLayoutDirection(QtCore.Qt.LeftToRight)  \n        self.progressBar.setProperty(\"value\", -1)  \n        self.progressBar.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)  \n        self.progressBar.setTextVisible(True)  \n        self.progressBar.setOrientation(QtCore.Qt.Horizontal)  \n        self.progressBar.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n        self.progressBar.setFormat(\"\")  \n        self.progressBar.setObjectName(\"progressBar\")  \n        self.progressBar_2 = QtWidgets.QProgressBar(self.centralwidget)  \n        self.progressBar_2.setGeometry(QtCore.QRect(50, 180, 201, 31))  \n        self.progressBar_2.setLayoutDirection(QtCore.Qt.RightToLeft)  \n        self.progressBar_2.setProperty(\"value\", -1)  \n        self.progressBar_2.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)  \n        self.progressBar_2.setTextVisible(True)  \n        self.progressBar_2.setOrientation(QtCore.Qt.Horizontal)  \n        self.progressBar_2.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n        self.progressBar_2.setObjectName(\"progressBar_2\")  \n        self.progressBar_3 = QtWidgets.QProgressBar(self.centralwidget)  \n        self.progressBar_3.setGeometry(QtCore.QRect(20, 10, 31, 201))  \n        self.progressBar_3.setLayoutDirection(QtCore.Qt.LeftToRight)  \n        self.progressBar_3.setProperty(\"value\", -1)  \n        self.progressBar_3.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)  \n        self.progressBar_3.setTextVisible(True)  \n        self.progressBar_3.setOrientation(QtCore.Qt.Vertical)  \n        self.progressBar_3.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n        self.progressBar_3.setObjectName(\"progressBar_3\")  \n        self.progressBar_1 = QtWidgets.QProgressBar(self.centralwidget)  \n        self.progressBar_1.setGeometry(QtCore.QRect(250, 10, 31, 201))  \n        self.progressBar_1.setLayoutDirection(QtCore.Qt.LeftToRight)  \n        self.progressBar_1.setProperty(\"value\", -1)  \n        self.progressBar_1.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)  \n        self.progressBar_1.setTextVisible(True)  \n        self.progressBar_1.setOrientation(QtCore.Qt.Vertical)  \n        self.progressBar_1.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n        self.progressBar_1.setObjectName(\"progressBar_1\")  \n        self.pushButton = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton.setGeometry(QtCore.QRect(90, 220, 101, 31))  \n        self.pushButton.setObjectName(\"pushButton\")  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n        self.timer = QtCore.QBasicTimer()             # 创建计时器对象  \n        # 为按钮绑定单击信号  \n        self.pushButton.clicked.connect(self.running)  \n  \n    # 控制进度条的滚动效果  \n    def running(self):  \n        if self.timer.isActive():                 # 判断计时器是否开启  \n            self.timer.stop()                     # 停止计时器  \n            self.pushButton.setText('开始')            # 设置按钮的文本  \n            # 设置4个进度条的最大值为100  \n            self.progressBar.setMaximum(100)  \n            self.progressBar_1.setMaximum(100)  \n            self.progressBar_2.setMaximum(100)  \n            self.progressBar_3.setMaximum(100)  \n        else:  \n            self.timer.start(100,MainWindow)             # 启动计时器  \n            self.pushButton.setText('停止')             # 设置按钮的文本  \n            # 将4个进度条的最大值和最小值都设置为0，以便显示循环滚动的效果  \n            self.progressBar.setMinimum(0)  \n            self.progressBar.setMaximum(0)  \n            self.progressBar_1.setInvertedAppearance(True)     # 设置进度反方向显示  \n            self.progressBar_1.setMinimum(0)  \n            self.progressBar_1.setMaximum(0)  \n            self.progressBar_2.setMinimum(0)  \n            self.progressBar_2.setMaximum(0)  \n            self.progressBar_3.setMinimum(0)  \n            self.progressBar_3.setMaximum(0)  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"跑马灯效果\"))  \n        self.pushButton.setText(_translate(\"MainWindow\", \"开始\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n   app = QtWidgets.QApplication(sys.argv)  \n   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象  \n   ui = Ui_MainWindow()           # 创建PyQt设计的窗体对象  \n   ui.setupUi(MainWindow)           # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n   MainWindow.show()               # 显示窗体  \n   sys.exit(app.exec_())           # 程序关闭时退出进程\n","python",[591],{"type":19,"tag":27,"props":592,"children":593},{"__ignoreMap":7},[594,605,614,623,632,641,650,659,668,677,686,695,704,713,722,731,740,749,758,767,776,785,794,803,812,821,830,839,848,857,866,875,884,893,902,911,920,929,938,947,956,965,974,983,992,1001,1010,1019,1028,1037,1046,1055,1064,1073,1082,1090,1099,1108,1117,1126,1135,1144,1153,1162,1171,1180,1189,1198,1207,1216,1225,1234,1243,1252,1261,1270,1279,1288,1297,1305,1314,1323,1332,1341,1349,1358,1367,1376,1385,1394,1403,1412,1421],{"type":19,"tag":595,"props":596,"children":599},"span",{"class":597,"line":598},"line",1,[600],{"type":19,"tag":595,"props":601,"children":602},{},[603],{"type":24,"value":604},"from PyQt5 import QtCore, QtGui, QtWidgets  \n",{"type":19,"tag":595,"props":606,"children":608},{"class":597,"line":607},2,[609],{"type":19,"tag":595,"props":610,"children":611},{},[612],{"type":24,"value":613},"  \n",{"type":19,"tag":595,"props":615,"children":617},{"class":597,"line":616},3,[618],{"type":19,"tag":595,"props":619,"children":620},{},[621],{"type":24,"value":622},"class Ui_MainWindow(object):  \n",{"type":19,"tag":595,"props":624,"children":626},{"class":597,"line":625},4,[627],{"type":19,"tag":595,"props":628,"children":629},{},[630],{"type":24,"value":631},"    def setupUi(self, MainWindow):  \n",{"type":19,"tag":595,"props":633,"children":635},{"class":597,"line":634},5,[636],{"type":19,"tag":595,"props":637,"children":638},{},[639],{"type":24,"value":640},"        MainWindow.setObjectName(\"MainWindow\")  \n",{"type":19,"tag":595,"props":642,"children":644},{"class":597,"line":643},6,[645],{"type":19,"tag":595,"props":646,"children":647},{},[648],{"type":24,"value":649},"        MainWindow.resize(305, 259)  \n",{"type":19,"tag":595,"props":651,"children":653},{"class":597,"line":652},7,[654],{"type":19,"tag":595,"props":655,"children":656},{},[657],{"type":24,"value":658},"        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n",{"type":19,"tag":595,"props":660,"children":662},{"class":597,"line":661},8,[663],{"type":19,"tag":595,"props":664,"children":665},{},[666],{"type":24,"value":667},"        self.centralwidget.setObjectName(\"centralwidget\")  \n",{"type":19,"tag":595,"props":669,"children":671},{"class":597,"line":670},9,[672],{"type":19,"tag":595,"props":673,"children":674},{},[675],{"type":24,"value":676},"        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)  \n",{"type":19,"tag":595,"props":678,"children":680},{"class":597,"line":679},10,[681],{"type":19,"tag":595,"props":682,"children":683},{},[684],{"type":24,"value":685},"        self.progressBar.setGeometry(QtCore.QRect(50, 10, 201, 31))  \n",{"type":19,"tag":595,"props":687,"children":689},{"class":597,"line":688},11,[690],{"type":19,"tag":595,"props":691,"children":692},{},[693],{"type":24,"value":694},"        self.progressBar.setLayoutDirection(QtCore.Qt.LeftToRight)  \n",{"type":19,"tag":595,"props":696,"children":698},{"class":597,"line":697},12,[699],{"type":19,"tag":595,"props":700,"children":701},{},[702],{"type":24,"value":703},"        self.progressBar.setProperty(\"value\", -1)  \n",{"type":19,"tag":595,"props":705,"children":707},{"class":597,"line":706},13,[708],{"type":19,"tag":595,"props":709,"children":710},{},[711],{"type":24,"value":712},"        self.progressBar.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)  \n",{"type":19,"tag":595,"props":714,"children":716},{"class":597,"line":715},14,[717],{"type":19,"tag":595,"props":718,"children":719},{},[720],{"type":24,"value":721},"        self.progressBar.setTextVisible(True)  \n",{"type":19,"tag":595,"props":723,"children":725},{"class":597,"line":724},15,[726],{"type":19,"tag":595,"props":727,"children":728},{},[729],{"type":24,"value":730},"        self.progressBar.setOrientation(QtCore.Qt.Horizontal)  \n",{"type":19,"tag":595,"props":732,"children":734},{"class":597,"line":733},16,[735],{"type":19,"tag":595,"props":736,"children":737},{},[738],{"type":24,"value":739},"        self.progressBar.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n",{"type":19,"tag":595,"props":741,"children":743},{"class":597,"line":742},17,[744],{"type":19,"tag":595,"props":745,"children":746},{},[747],{"type":24,"value":748},"        self.progressBar.setFormat(\"\")  \n",{"type":19,"tag":595,"props":750,"children":752},{"class":597,"line":751},18,[753],{"type":19,"tag":595,"props":754,"children":755},{},[756],{"type":24,"value":757},"        self.progressBar.setObjectName(\"progressBar\")  \n",{"type":19,"tag":595,"props":759,"children":761},{"class":597,"line":760},19,[762],{"type":19,"tag":595,"props":763,"children":764},{},[765],{"type":24,"value":766},"        self.progressBar_2 = QtWidgets.QProgressBar(self.centralwidget)  \n",{"type":19,"tag":595,"props":768,"children":770},{"class":597,"line":769},20,[771],{"type":19,"tag":595,"props":772,"children":773},{},[774],{"type":24,"value":775},"        self.progressBar_2.setGeometry(QtCore.QRect(50, 180, 201, 31))  \n",{"type":19,"tag":595,"props":777,"children":779},{"class":597,"line":778},21,[780],{"type":19,"tag":595,"props":781,"children":782},{},[783],{"type":24,"value":784},"        self.progressBar_2.setLayoutDirection(QtCore.Qt.RightToLeft)  \n",{"type":19,"tag":595,"props":786,"children":788},{"class":597,"line":787},22,[789],{"type":19,"tag":595,"props":790,"children":791},{},[792],{"type":24,"value":793},"        self.progressBar_2.setProperty(\"value\", -1)  \n",{"type":19,"tag":595,"props":795,"children":797},{"class":597,"line":796},23,[798],{"type":19,"tag":595,"props":799,"children":800},{},[801],{"type":24,"value":802},"        self.progressBar_2.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)  \n",{"type":19,"tag":595,"props":804,"children":806},{"class":597,"line":805},24,[807],{"type":19,"tag":595,"props":808,"children":809},{},[810],{"type":24,"value":811},"        self.progressBar_2.setTextVisible(True)  \n",{"type":19,"tag":595,"props":813,"children":815},{"class":597,"line":814},25,[816],{"type":19,"tag":595,"props":817,"children":818},{},[819],{"type":24,"value":820},"        self.progressBar_2.setOrientation(QtCore.Qt.Horizontal)  \n",{"type":19,"tag":595,"props":822,"children":824},{"class":597,"line":823},26,[825],{"type":19,"tag":595,"props":826,"children":827},{},[828],{"type":24,"value":829},"        self.progressBar_2.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n",{"type":19,"tag":595,"props":831,"children":833},{"class":597,"line":832},27,[834],{"type":19,"tag":595,"props":835,"children":836},{},[837],{"type":24,"value":838},"        self.progressBar_2.setObjectName(\"progressBar_2\")  \n",{"type":19,"tag":595,"props":840,"children":842},{"class":597,"line":841},28,[843],{"type":19,"tag":595,"props":844,"children":845},{},[846],{"type":24,"value":847},"        self.progressBar_3 = QtWidgets.QProgressBar(self.centralwidget)  \n",{"type":19,"tag":595,"props":849,"children":851},{"class":597,"line":850},29,[852],{"type":19,"tag":595,"props":853,"children":854},{},[855],{"type":24,"value":856},"        self.progressBar_3.setGeometry(QtCore.QRect(20, 10, 31, 201))  \n",{"type":19,"tag":595,"props":858,"children":860},{"class":597,"line":859},30,[861],{"type":19,"tag":595,"props":862,"children":863},{},[864],{"type":24,"value":865},"        self.progressBar_3.setLayoutDirection(QtCore.Qt.LeftToRight)  \n",{"type":19,"tag":595,"props":867,"children":869},{"class":597,"line":868},31,[870],{"type":19,"tag":595,"props":871,"children":872},{},[873],{"type":24,"value":874},"        self.progressBar_3.setProperty(\"value\", -1)  \n",{"type":19,"tag":595,"props":876,"children":878},{"class":597,"line":877},32,[879],{"type":19,"tag":595,"props":880,"children":881},{},[882],{"type":24,"value":883},"        self.progressBar_3.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)  \n",{"type":19,"tag":595,"props":885,"children":887},{"class":597,"line":886},33,[888],{"type":19,"tag":595,"props":889,"children":890},{},[891],{"type":24,"value":892},"        self.progressBar_3.setTextVisible(True)  \n",{"type":19,"tag":595,"props":894,"children":896},{"class":597,"line":895},34,[897],{"type":19,"tag":595,"props":898,"children":899},{},[900],{"type":24,"value":901},"        self.progressBar_3.setOrientation(QtCore.Qt.Vertical)  \n",{"type":19,"tag":595,"props":903,"children":905},{"class":597,"line":904},35,[906],{"type":19,"tag":595,"props":907,"children":908},{},[909],{"type":24,"value":910},"        self.progressBar_3.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n",{"type":19,"tag":595,"props":912,"children":914},{"class":597,"line":913},36,[915],{"type":19,"tag":595,"props":916,"children":917},{},[918],{"type":24,"value":919},"        self.progressBar_3.setObjectName(\"progressBar_3\")  \n",{"type":19,"tag":595,"props":921,"children":923},{"class":597,"line":922},37,[924],{"type":19,"tag":595,"props":925,"children":926},{},[927],{"type":24,"value":928},"        self.progressBar_1 = QtWidgets.QProgressBar(self.centralwidget)  \n",{"type":19,"tag":595,"props":930,"children":932},{"class":597,"line":931},38,[933],{"type":19,"tag":595,"props":934,"children":935},{},[936],{"type":24,"value":937},"        self.progressBar_1.setGeometry(QtCore.QRect(250, 10, 31, 201))  \n",{"type":19,"tag":595,"props":939,"children":941},{"class":597,"line":940},39,[942],{"type":19,"tag":595,"props":943,"children":944},{},[945],{"type":24,"value":946},"        self.progressBar_1.setLayoutDirection(QtCore.Qt.LeftToRight)  \n",{"type":19,"tag":595,"props":948,"children":950},{"class":597,"line":949},40,[951],{"type":19,"tag":595,"props":952,"children":953},{},[954],{"type":24,"value":955},"        self.progressBar_1.setProperty(\"value\", -1)  \n",{"type":19,"tag":595,"props":957,"children":959},{"class":597,"line":958},41,[960],{"type":19,"tag":595,"props":961,"children":962},{},[963],{"type":24,"value":964},"        self.progressBar_1.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)  \n",{"type":19,"tag":595,"props":966,"children":968},{"class":597,"line":967},42,[969],{"type":19,"tag":595,"props":970,"children":971},{},[972],{"type":24,"value":973},"        self.progressBar_1.setTextVisible(True)  \n",{"type":19,"tag":595,"props":975,"children":977},{"class":597,"line":976},43,[978],{"type":19,"tag":595,"props":979,"children":980},{},[981],{"type":24,"value":982},"        self.progressBar_1.setOrientation(QtCore.Qt.Vertical)  \n",{"type":19,"tag":595,"props":984,"children":986},{"class":597,"line":985},44,[987],{"type":19,"tag":595,"props":988,"children":989},{},[990],{"type":24,"value":991},"        self.progressBar_1.setTextDirection(QtWidgets.QProgressBar.TopToBottom)  \n",{"type":19,"tag":595,"props":993,"children":995},{"class":597,"line":994},45,[996],{"type":19,"tag":595,"props":997,"children":998},{},[999],{"type":24,"value":1000},"        self.progressBar_1.setObjectName(\"progressBar_1\")  \n",{"type":19,"tag":595,"props":1002,"children":1004},{"class":597,"line":1003},46,[1005],{"type":19,"tag":595,"props":1006,"children":1007},{},[1008],{"type":24,"value":1009},"        self.pushButton = QtWidgets.QPushButton(self.centralwidget)  \n",{"type":19,"tag":595,"props":1011,"children":1013},{"class":597,"line":1012},47,[1014],{"type":19,"tag":595,"props":1015,"children":1016},{},[1017],{"type":24,"value":1018},"        self.pushButton.setGeometry(QtCore.QRect(90, 220, 101, 31))  \n",{"type":19,"tag":595,"props":1020,"children":1022},{"class":597,"line":1021},48,[1023],{"type":19,"tag":595,"props":1024,"children":1025},{},[1026],{"type":24,"value":1027},"        self.pushButton.setObjectName(\"pushButton\")  \n",{"type":19,"tag":595,"props":1029,"children":1031},{"class":597,"line":1030},49,[1032],{"type":19,"tag":595,"props":1033,"children":1034},{},[1035],{"type":24,"value":1036},"        MainWindow.setCentralWidget(self.centralwidget)  \n",{"type":19,"tag":595,"props":1038,"children":1040},{"class":597,"line":1039},50,[1041],{"type":19,"tag":595,"props":1042,"children":1043},{},[1044],{"type":24,"value":1045},"        self.retranslateUi(MainWindow)  \n",{"type":19,"tag":595,"props":1047,"children":1049},{"class":597,"line":1048},51,[1050],{"type":19,"tag":595,"props":1051,"children":1052},{},[1053],{"type":24,"value":1054},"        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n",{"type":19,"tag":595,"props":1056,"children":1058},{"class":597,"line":1057},52,[1059],{"type":19,"tag":595,"props":1060,"children":1061},{},[1062],{"type":24,"value":1063},"        self.timer = QtCore.QBasicTimer()             # 创建计时器对象  \n",{"type":19,"tag":595,"props":1065,"children":1067},{"class":597,"line":1066},53,[1068],{"type":19,"tag":595,"props":1069,"children":1070},{},[1071],{"type":24,"value":1072},"        # 为按钮绑定单击信号  \n",{"type":19,"tag":595,"props":1074,"children":1076},{"class":597,"line":1075},54,[1077],{"type":19,"tag":595,"props":1078,"children":1079},{},[1080],{"type":24,"value":1081},"        self.pushButton.clicked.connect(self.running)  \n",{"type":19,"tag":595,"props":1083,"children":1085},{"class":597,"line":1084},55,[1086],{"type":19,"tag":595,"props":1087,"children":1088},{},[1089],{"type":24,"value":613},{"type":19,"tag":595,"props":1091,"children":1093},{"class":597,"line":1092},56,[1094],{"type":19,"tag":595,"props":1095,"children":1096},{},[1097],{"type":24,"value":1098},"    # 控制进度条的滚动效果  \n",{"type":19,"tag":595,"props":1100,"children":1102},{"class":597,"line":1101},57,[1103],{"type":19,"tag":595,"props":1104,"children":1105},{},[1106],{"type":24,"value":1107},"    def running(self):  \n",{"type":19,"tag":595,"props":1109,"children":1111},{"class":597,"line":1110},58,[1112],{"type":19,"tag":595,"props":1113,"children":1114},{},[1115],{"type":24,"value":1116},"        if self.timer.isActive():                 # 判断计时器是否开启  \n",{"type":19,"tag":595,"props":1118,"children":1120},{"class":597,"line":1119},59,[1121],{"type":19,"tag":595,"props":1122,"children":1123},{},[1124],{"type":24,"value":1125},"            self.timer.stop()                     # 停止计时器  \n",{"type":19,"tag":595,"props":1127,"children":1129},{"class":597,"line":1128},60,[1130],{"type":19,"tag":595,"props":1131,"children":1132},{},[1133],{"type":24,"value":1134},"            self.pushButton.setText('开始')            # 设置按钮的文本  \n",{"type":19,"tag":595,"props":1136,"children":1138},{"class":597,"line":1137},61,[1139],{"type":19,"tag":595,"props":1140,"children":1141},{},[1142],{"type":24,"value":1143},"            # 设置4个进度条的最大值为100  \n",{"type":19,"tag":595,"props":1145,"children":1147},{"class":597,"line":1146},62,[1148],{"type":19,"tag":595,"props":1149,"children":1150},{},[1151],{"type":24,"value":1152},"            self.progressBar.setMaximum(100)  \n",{"type":19,"tag":595,"props":1154,"children":1156},{"class":597,"line":1155},63,[1157],{"type":19,"tag":595,"props":1158,"children":1159},{},[1160],{"type":24,"value":1161},"            self.progressBar_1.setMaximum(100)  \n",{"type":19,"tag":595,"props":1163,"children":1165},{"class":597,"line":1164},64,[1166],{"type":19,"tag":595,"props":1167,"children":1168},{},[1169],{"type":24,"value":1170},"            self.progressBar_2.setMaximum(100)  \n",{"type":19,"tag":595,"props":1172,"children":1174},{"class":597,"line":1173},65,[1175],{"type":19,"tag":595,"props":1176,"children":1177},{},[1178],{"type":24,"value":1179},"            self.progressBar_3.setMaximum(100)  \n",{"type":19,"tag":595,"props":1181,"children":1183},{"class":597,"line":1182},66,[1184],{"type":19,"tag":595,"props":1185,"children":1186},{},[1187],{"type":24,"value":1188},"        else:  \n",{"type":19,"tag":595,"props":1190,"children":1192},{"class":597,"line":1191},67,[1193],{"type":19,"tag":595,"props":1194,"children":1195},{},[1196],{"type":24,"value":1197},"            self.timer.start(100,MainWindow)             # 启动计时器  \n",{"type":19,"tag":595,"props":1199,"children":1201},{"class":597,"line":1200},68,[1202],{"type":19,"tag":595,"props":1203,"children":1204},{},[1205],{"type":24,"value":1206},"            self.pushButton.setText('停止')             # 设置按钮的文本  \n",{"type":19,"tag":595,"props":1208,"children":1210},{"class":597,"line":1209},69,[1211],{"type":19,"tag":595,"props":1212,"children":1213},{},[1214],{"type":24,"value":1215},"            # 将4个进度条的最大值和最小值都设置为0，以便显示循环滚动的效果  \n",{"type":19,"tag":595,"props":1217,"children":1219},{"class":597,"line":1218},70,[1220],{"type":19,"tag":595,"props":1221,"children":1222},{},[1223],{"type":24,"value":1224},"            self.progressBar.setMinimum(0)  \n",{"type":19,"tag":595,"props":1226,"children":1228},{"class":597,"line":1227},71,[1229],{"type":19,"tag":595,"props":1230,"children":1231},{},[1232],{"type":24,"value":1233},"            self.progressBar.setMaximum(0)  \n",{"type":19,"tag":595,"props":1235,"children":1237},{"class":597,"line":1236},72,[1238],{"type":19,"tag":595,"props":1239,"children":1240},{},[1241],{"type":24,"value":1242},"            self.progressBar_1.setInvertedAppearance(True)     # 设置进度反方向显示  \n",{"type":19,"tag":595,"props":1244,"children":1246},{"class":597,"line":1245},73,[1247],{"type":19,"tag":595,"props":1248,"children":1249},{},[1250],{"type":24,"value":1251},"            self.progressBar_1.setMinimum(0)  \n",{"type":19,"tag":595,"props":1253,"children":1255},{"class":597,"line":1254},74,[1256],{"type":19,"tag":595,"props":1257,"children":1258},{},[1259],{"type":24,"value":1260},"            self.progressBar_1.setMaximum(0)  \n",{"type":19,"tag":595,"props":1262,"children":1264},{"class":597,"line":1263},75,[1265],{"type":19,"tag":595,"props":1266,"children":1267},{},[1268],{"type":24,"value":1269},"            self.progressBar_2.setMinimum(0)  \n",{"type":19,"tag":595,"props":1271,"children":1273},{"class":597,"line":1272},76,[1274],{"type":19,"tag":595,"props":1275,"children":1276},{},[1277],{"type":24,"value":1278},"            self.progressBar_2.setMaximum(0)  \n",{"type":19,"tag":595,"props":1280,"children":1282},{"class":597,"line":1281},77,[1283],{"type":19,"tag":595,"props":1284,"children":1285},{},[1286],{"type":24,"value":1287},"            self.progressBar_3.setMinimum(0)  \n",{"type":19,"tag":595,"props":1289,"children":1291},{"class":597,"line":1290},78,[1292],{"type":19,"tag":595,"props":1293,"children":1294},{},[1295],{"type":24,"value":1296},"            self.progressBar_3.setMaximum(0)  \n",{"type":19,"tag":595,"props":1298,"children":1300},{"class":597,"line":1299},79,[1301],{"type":19,"tag":595,"props":1302,"children":1303},{},[1304],{"type":24,"value":613},{"type":19,"tag":595,"props":1306,"children":1308},{"class":597,"line":1307},80,[1309],{"type":19,"tag":595,"props":1310,"children":1311},{},[1312],{"type":24,"value":1313},"    def retranslateUi(self, MainWindow):  \n",{"type":19,"tag":595,"props":1315,"children":1317},{"class":597,"line":1316},81,[1318],{"type":19,"tag":595,"props":1319,"children":1320},{},[1321],{"type":24,"value":1322},"        _translate = QtCore.QCoreApplication.translate  \n",{"type":19,"tag":595,"props":1324,"children":1326},{"class":597,"line":1325},82,[1327],{"type":19,"tag":595,"props":1328,"children":1329},{},[1330],{"type":24,"value":1331},"        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"跑马灯效果\"))  \n",{"type":19,"tag":595,"props":1333,"children":1335},{"class":597,"line":1334},83,[1336],{"type":19,"tag":595,"props":1337,"children":1338},{},[1339],{"type":24,"value":1340},"        self.pushButton.setText(_translate(\"MainWindow\", \"开始\"))  \n",{"type":19,"tag":595,"props":1342,"children":1344},{"class":597,"line":1343},84,[1345],{"type":19,"tag":595,"props":1346,"children":1347},{},[1348],{"type":24,"value":613},{"type":19,"tag":595,"props":1350,"children":1352},{"class":597,"line":1351},85,[1353],{"type":19,"tag":595,"props":1354,"children":1355},{},[1356],{"type":24,"value":1357},"import sys  \n",{"type":19,"tag":595,"props":1359,"children":1361},{"class":597,"line":1360},86,[1362],{"type":19,"tag":595,"props":1363,"children":1364},{},[1365],{"type":24,"value":1366},"# 程序入口，程序从此处启动PyQt设计的窗体  \n",{"type":19,"tag":595,"props":1368,"children":1370},{"class":597,"line":1369},87,[1371],{"type":19,"tag":595,"props":1372,"children":1373},{},[1374],{"type":24,"value":1375},"if __name__ == '__main__':  \n",{"type":19,"tag":595,"props":1377,"children":1379},{"class":597,"line":1378},88,[1380],{"type":19,"tag":595,"props":1381,"children":1382},{},[1383],{"type":24,"value":1384},"   app = QtWidgets.QApplication(sys.argv)  \n",{"type":19,"tag":595,"props":1386,"children":1388},{"class":597,"line":1387},89,[1389],{"type":19,"tag":595,"props":1390,"children":1391},{},[1392],{"type":24,"value":1393},"   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象  \n",{"type":19,"tag":595,"props":1395,"children":1397},{"class":597,"line":1396},90,[1398],{"type":19,"tag":595,"props":1399,"children":1400},{},[1401],{"type":24,"value":1402},"   ui = Ui_MainWindow()           # 创建PyQt设计的窗体对象  \n",{"type":19,"tag":595,"props":1404,"children":1406},{"class":597,"line":1405},91,[1407],{"type":19,"tag":595,"props":1408,"children":1409},{},[1410],{"type":24,"value":1411},"   ui.setupUi(MainWindow)           # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n",{"type":19,"tag":595,"props":1413,"children":1415},{"class":597,"line":1414},92,[1416],{"type":19,"tag":595,"props":1417,"children":1418},{},[1419],{"type":24,"value":1420},"   MainWindow.show()               # 显示窗体  \n",{"type":19,"tag":595,"props":1422,"children":1424},{"class":597,"line":1423},93,[1425],{"type":19,"tag":595,"props":1426,"children":1427},{},[1428],{"type":24,"value":1429},"   sys.exit(app.exec_())           # 程序关闭时退出进程\n",{"type":19,"tag":505,"props":1431,"children":1432},{},[1433],{"type":19,"tag":20,"props":1434,"children":1435},{},[1436,1440,1442,1448,1450,1456,1458,1463,1465,1471,1473,1479,1481,1486],{"type":19,"tag":112,"props":1437,"children":1438},{},[1439],{"type":24,"value":515},{"type":24,"value":1441}," 多学两招\n上面代码中用到了",{"type":19,"tag":27,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":24,"value":1447},"QBasicTimer",{"type":24,"value":1449},"类，该类是",{"type":19,"tag":27,"props":1451,"children":1453},{"className":1452},[],[1454],{"type":24,"value":1455},"QtCore",{"type":24,"value":1457},"模块中包含的一个类，主要用来为对象提供定时器事件。",{"type":19,"tag":27,"props":1459,"children":1461},{"className":1460},[],[1462],{"type":24,"value":1447},{"type":24,"value":1464},"定时器是一个重复的定时器，除非调用",{"type":19,"tag":27,"props":1466,"children":1468},{"className":1467},[],[1469],{"type":24,"value":1470},"stop()方法",{"type":24,"value":1472},"，否则它将发送后续的定时器事件。启动定时器使用",{"type":19,"tag":27,"props":1474,"children":1476},{"className":1475},[],[1477],{"type":24,"value":1478},"start()方法",{"type":24,"value":1480},"，该方法有两个参数，分别为超时时间（毫秒）和接收事件的对象；而停止定时器时使用",{"type":19,"tag":27,"props":1482,"children":1484},{"className":1483},[],[1485],{"type":24,"value":1470},{"type":24,"value":1487},"即可。",{"type":19,"tag":20,"props":1489,"children":1490},{},[1491],{"type":24,"value":1492},"运行程序，初始效果如图所示;",{"type":19,"tag":20,"props":1494,"children":1495},{},[1496],{"type":19,"tag":499,"props":1497,"children":1500},{"alt":1498,"src":1499},"Pasted image 20250901210316","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901210316.png",[],{"type":19,"tag":20,"props":1502,"children":1503},{},[1504,1506,1512,1514,1520,1522,1527],{"type":24,"value":1505},"单击",{"type":19,"tag":27,"props":1507,"children":1509},{"className":1508},[],[1510],{"type":24,"value":1511},"开始",{"type":24,"value":1513},"按钮，启动跑马灯效果，并且按钮的文本变为",{"type":19,"tag":27,"props":1515,"children":1517},{"className":1516},[],[1518],{"type":24,"value":1519},"停止",{"type":24,"value":1521},"，如图所示，单击",{"type":19,"tag":27,"props":1523,"children":1525},{"className":1524},[],[1526],{"type":24,"value":1519},{"type":24,"value":1528},"按钮，即可恢复如上图所示的默认效果。",{"type":19,"tag":20,"props":1530,"children":1531},{},[1532],{"type":19,"tag":499,"props":1533,"children":1536},{"alt":1534,"src":1535},"Pasted image 20250901210423","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901210423.png",[],{"type":19,"tag":36,"props":1538,"children":1540},{"id":1539},"_2自定义等待提示框",[1541],{"type":24,"value":1542},"2  自定义等待提示框",{"type":19,"tag":50,"props":1544,"children":1545},{},[],{"type":19,"tag":20,"props":1547,"children":1548},{},[1549,1551,1556,1558,1563],{"type":24,"value":1550},"在使用PyQt5创建桌面窗口应用程序时，有时会遇到等待长任务执行的情况，PyQt5中提供的",{"type":19,"tag":27,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":24,"value":32},{"type":24,"value":1557},"控件（即",{"type":19,"tag":27,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":24,"value":78},{"type":24,"value":1564},"对象）虽然也可以通过循环滚动的方式等待任务执行完成，但与通常见到的类似图所示的等待提示框相比，在美观程度上有所欠缺，因此本节将介绍如何在PyQt5中自定义等待提示。",{"type":19,"tag":20,"props":1566,"children":1567},{},[1568],{"type":19,"tag":499,"props":1569,"children":1572},{"alt":1570,"src":1571},"Pasted image 20250901210612","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901210612.png",[],{"type":19,"tag":20,"props":1574,"children":1575},{},[1576],{"type":19,"tag":112,"props":1577,"children":1578},{},[1579],{"type":24,"value":1580},"实例 设置自定义等待提示框",{"type":19,"tag":20,"props":1582,"children":1583},{},[1584,1586,1592,1594,1599,1601,1607,1609,1614],{"type":24,"value":1585},"使用PyQt5实现等待提示框时，可以通过加载GIF图片的方式模拟等待提示框，首先在创建主窗口时，在窗口的中间位置添加一个可以加载GIF图片的",{"type":19,"tag":27,"props":1587,"children":1589},{"className":1588},[],[1590],{"type":24,"value":1591},"Label",{"type":24,"value":1593},"控件，然后再添加两个",{"type":19,"tag":27,"props":1595,"children":1597},{"className":1596},[],[1598],{"type":24,"value":551},{"type":24,"value":1600},"按钮，分别用于控制等待提示框的",{"type":19,"tag":27,"props":1602,"children":1604},{"className":1603},[],[1605],{"type":24,"value":1606},"启动",{"type":24,"value":1608},"与",{"type":19,"tag":27,"props":1610,"children":1612},{"className":1611},[],[1613],{"type":24,"value":1519},{"type":24,"value":1615},"。代码如下：",{"type":19,"tag":585,"props":1617,"children":1619},{"className":587,"code":1618,"language":589,"meta":7,"style":7},"from PyQt5 import QtCore, QtGui, QtWidgets  \n  \n  \nclass Ui_MainWindow(object):  \n  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(682, 583)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        # 创建主布局  \n        self.main_layout = QtWidgets.QVBoxLayout(self.centralwidget)  \n        self.loading = QtWidgets.QLabel(self.centralwidget)  \n        self.loading.setStyleSheet(\"\")  \n        self.loading.setText(\"\")  \n        self.loading.setObjectName(\"loading\")  \n        # 设置GIF居中显示  \n        self.loading.setAlignment(QtCore.Qt.AlignCenter)  \n        # 添加到布局  \n        self.main_layout.addWidget(self.loading)  \n        # 创建按钮布局  \n        self.button_layout = QtWidgets.QHBoxLayout()  \n        self.pushButton_start = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton_start.setMinimumSize(QtCore.QSize(100, 50))  \n        self.pushButton_start.setObjectName(\"pushButton_start\")  \n        self.button_layout.addWidget(self.pushButton_start)  \n        # 添加伸缩项，让两个按钮分开  \n        self.button_layout.addStretch()  \n        self.pushButton_stop = QtWidgets.QPushButton(self.centralwidget)  \n        self.pushButton_stop.setMinimumSize(QtCore.QSize(100, 50))  \n        self.pushButton_stop.setObjectName(\"pushButton_stop\")  \n        self.button_layout.addWidget(self.pushButton_stop)  \n        # 将按钮布局添加到主布局  \n        self.main_layout.addLayout(self.button_layout)  \n        # 设置按钮区域的最小高度  \n        self.main_layout.setStretch(0, 3)  # GIF区域占3份高度  \n        self.main_layout.setStretch(1, 1)  # 按钮区域占1份高度  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n        self.pushButton_start.clicked.connect(self.start_loading)  \n        self.pushButton_stop.clicked.connect(self.stop_loading)  \n  \n    def start_loading(self):  \n        self.gif = QtGui.QMovie('loading.gif')  \n        # 设置GIF缩放模式，保持比例适应标签大小  \n        self.loading.setScaledContents(True)  \n        self.loading.setMovie(self.gif)  \n        self.gif.start()  \n  \n    def stop_loading(self):  \n        if hasattr(self, 'gif'):  # 避免未启动时点击停止报错  \n            self.gif.stop()  \n            self.loading.clear()  \n            self.loading.setScaledContents(False)  # 恢复默认状态  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"加载动画演示\"))  \n        self.pushButton_start.setText(_translate(\"MainWindow\", \"启动等待提示\"))  \n        self.pushButton_stop.setText(_translate(\"MainWindow\", \"停止等待提示\"))  \n  \n  \nimport sys  \n  \nif __name__ == '__main__':  \n    app = QtWidgets.QApplication(sys.argv)  \n    MainWindow = QtWidgets.QMainWindow()  \n    ui = Ui_MainWindow()  \n    ui.setupUi(MainWindow)  \n    MainWindow.show()  \n    sys.exit(app.exec_())\n",[1620],{"type":19,"tag":27,"props":1621,"children":1622},{"__ignoreMap":7},[1623,1630,1637,1644,1651,1658,1665,1672,1680,1687,1694,1702,1710,1718,1726,1734,1742,1750,1758,1766,1774,1782,1790,1798,1806,1814,1822,1830,1838,1846,1854,1862,1870,1878,1886,1894,1902,1910,1917,1924,1931,1939,1947,1954,1962,1970,1978,1986,1994,2002,2009,2017,2025,2033,2041,2049,2056,2063,2070,2078,2086,2094,2101,2108,2115,2122,2129,2137,2145,2153,2161,2169],{"type":19,"tag":595,"props":1624,"children":1625},{"class":597,"line":598},[1626],{"type":19,"tag":595,"props":1627,"children":1628},{},[1629],{"type":24,"value":604},{"type":19,"tag":595,"props":1631,"children":1632},{"class":597,"line":607},[1633],{"type":19,"tag":595,"props":1634,"children":1635},{},[1636],{"type":24,"value":613},{"type":19,"tag":595,"props":1638,"children":1639},{"class":597,"line":616},[1640],{"type":19,"tag":595,"props":1641,"children":1642},{},[1643],{"type":24,"value":613},{"type":19,"tag":595,"props":1645,"children":1646},{"class":597,"line":625},[1647],{"type":19,"tag":595,"props":1648,"children":1649},{},[1650],{"type":24,"value":622},{"type":19,"tag":595,"props":1652,"children":1653},{"class":597,"line":634},[1654],{"type":19,"tag":595,"props":1655,"children":1656},{},[1657],{"type":24,"value":613},{"type":19,"tag":595,"props":1659,"children":1660},{"class":597,"line":643},[1661],{"type":19,"tag":595,"props":1662,"children":1663},{},[1664],{"type":24,"value":631},{"type":19,"tag":595,"props":1666,"children":1667},{"class":597,"line":652},[1668],{"type":19,"tag":595,"props":1669,"children":1670},{},[1671],{"type":24,"value":640},{"type":19,"tag":595,"props":1673,"children":1674},{"class":597,"line":661},[1675],{"type":19,"tag":595,"props":1676,"children":1677},{},[1678],{"type":24,"value":1679},"        MainWindow.resize(682, 583)  \n",{"type":19,"tag":595,"props":1681,"children":1682},{"class":597,"line":670},[1683],{"type":19,"tag":595,"props":1684,"children":1685},{},[1686],{"type":24,"value":658},{"type":19,"tag":595,"props":1688,"children":1689},{"class":597,"line":679},[1690],{"type":19,"tag":595,"props":1691,"children":1692},{},[1693],{"type":24,"value":667},{"type":19,"tag":595,"props":1695,"children":1696},{"class":597,"line":688},[1697],{"type":19,"tag":595,"props":1698,"children":1699},{},[1700],{"type":24,"value":1701},"        # 创建主布局  \n",{"type":19,"tag":595,"props":1703,"children":1704},{"class":597,"line":697},[1705],{"type":19,"tag":595,"props":1706,"children":1707},{},[1708],{"type":24,"value":1709},"        self.main_layout = QtWidgets.QVBoxLayout(self.centralwidget)  \n",{"type":19,"tag":595,"props":1711,"children":1712},{"class":597,"line":706},[1713],{"type":19,"tag":595,"props":1714,"children":1715},{},[1716],{"type":24,"value":1717},"        self.loading = QtWidgets.QLabel(self.centralwidget)  \n",{"type":19,"tag":595,"props":1719,"children":1720},{"class":597,"line":715},[1721],{"type":19,"tag":595,"props":1722,"children":1723},{},[1724],{"type":24,"value":1725},"        self.loading.setStyleSheet(\"\")  \n",{"type":19,"tag":595,"props":1727,"children":1728},{"class":597,"line":724},[1729],{"type":19,"tag":595,"props":1730,"children":1731},{},[1732],{"type":24,"value":1733},"        self.loading.setText(\"\")  \n",{"type":19,"tag":595,"props":1735,"children":1736},{"class":597,"line":733},[1737],{"type":19,"tag":595,"props":1738,"children":1739},{},[1740],{"type":24,"value":1741},"        self.loading.setObjectName(\"loading\")  \n",{"type":19,"tag":595,"props":1743,"children":1744},{"class":597,"line":742},[1745],{"type":19,"tag":595,"props":1746,"children":1747},{},[1748],{"type":24,"value":1749},"        # 设置GIF居中显示  \n",{"type":19,"tag":595,"props":1751,"children":1752},{"class":597,"line":751},[1753],{"type":19,"tag":595,"props":1754,"children":1755},{},[1756],{"type":24,"value":1757},"        self.loading.setAlignment(QtCore.Qt.AlignCenter)  \n",{"type":19,"tag":595,"props":1759,"children":1760},{"class":597,"line":760},[1761],{"type":19,"tag":595,"props":1762,"children":1763},{},[1764],{"type":24,"value":1765},"        # 添加到布局  \n",{"type":19,"tag":595,"props":1767,"children":1768},{"class":597,"line":769},[1769],{"type":19,"tag":595,"props":1770,"children":1771},{},[1772],{"type":24,"value":1773},"        self.main_layout.addWidget(self.loading)  \n",{"type":19,"tag":595,"props":1775,"children":1776},{"class":597,"line":778},[1777],{"type":19,"tag":595,"props":1778,"children":1779},{},[1780],{"type":24,"value":1781},"        # 创建按钮布局  \n",{"type":19,"tag":595,"props":1783,"children":1784},{"class":597,"line":787},[1785],{"type":19,"tag":595,"props":1786,"children":1787},{},[1788],{"type":24,"value":1789},"        self.button_layout = QtWidgets.QHBoxLayout()  \n",{"type":19,"tag":595,"props":1791,"children":1792},{"class":597,"line":796},[1793],{"type":19,"tag":595,"props":1794,"children":1795},{},[1796],{"type":24,"value":1797},"        self.pushButton_start = QtWidgets.QPushButton(self.centralwidget)  \n",{"type":19,"tag":595,"props":1799,"children":1800},{"class":597,"line":805},[1801],{"type":19,"tag":595,"props":1802,"children":1803},{},[1804],{"type":24,"value":1805},"        self.pushButton_start.setMinimumSize(QtCore.QSize(100, 50))  \n",{"type":19,"tag":595,"props":1807,"children":1808},{"class":597,"line":814},[1809],{"type":19,"tag":595,"props":1810,"children":1811},{},[1812],{"type":24,"value":1813},"        self.pushButton_start.setObjectName(\"pushButton_start\")  \n",{"type":19,"tag":595,"props":1815,"children":1816},{"class":597,"line":823},[1817],{"type":19,"tag":595,"props":1818,"children":1819},{},[1820],{"type":24,"value":1821},"        self.button_layout.addWidget(self.pushButton_start)  \n",{"type":19,"tag":595,"props":1823,"children":1824},{"class":597,"line":832},[1825],{"type":19,"tag":595,"props":1826,"children":1827},{},[1828],{"type":24,"value":1829},"        # 添加伸缩项，让两个按钮分开  \n",{"type":19,"tag":595,"props":1831,"children":1832},{"class":597,"line":841},[1833],{"type":19,"tag":595,"props":1834,"children":1835},{},[1836],{"type":24,"value":1837},"        self.button_layout.addStretch()  \n",{"type":19,"tag":595,"props":1839,"children":1840},{"class":597,"line":850},[1841],{"type":19,"tag":595,"props":1842,"children":1843},{},[1844],{"type":24,"value":1845},"        self.pushButton_stop = QtWidgets.QPushButton(self.centralwidget)  \n",{"type":19,"tag":595,"props":1847,"children":1848},{"class":597,"line":859},[1849],{"type":19,"tag":595,"props":1850,"children":1851},{},[1852],{"type":24,"value":1853},"        self.pushButton_stop.setMinimumSize(QtCore.QSize(100, 50))  \n",{"type":19,"tag":595,"props":1855,"children":1856},{"class":597,"line":868},[1857],{"type":19,"tag":595,"props":1858,"children":1859},{},[1860],{"type":24,"value":1861},"        self.pushButton_stop.setObjectName(\"pushButton_stop\")  \n",{"type":19,"tag":595,"props":1863,"children":1864},{"class":597,"line":877},[1865],{"type":19,"tag":595,"props":1866,"children":1867},{},[1868],{"type":24,"value":1869},"        self.button_layout.addWidget(self.pushButton_stop)  \n",{"type":19,"tag":595,"props":1871,"children":1872},{"class":597,"line":886},[1873],{"type":19,"tag":595,"props":1874,"children":1875},{},[1876],{"type":24,"value":1877},"        # 将按钮布局添加到主布局  \n",{"type":19,"tag":595,"props":1879,"children":1880},{"class":597,"line":895},[1881],{"type":19,"tag":595,"props":1882,"children":1883},{},[1884],{"type":24,"value":1885},"        self.main_layout.addLayout(self.button_layout)  \n",{"type":19,"tag":595,"props":1887,"children":1888},{"class":597,"line":904},[1889],{"type":19,"tag":595,"props":1890,"children":1891},{},[1892],{"type":24,"value":1893},"        # 设置按钮区域的最小高度  \n",{"type":19,"tag":595,"props":1895,"children":1896},{"class":597,"line":913},[1897],{"type":19,"tag":595,"props":1898,"children":1899},{},[1900],{"type":24,"value":1901},"        self.main_layout.setStretch(0, 3)  # GIF区域占3份高度  \n",{"type":19,"tag":595,"props":1903,"children":1904},{"class":597,"line":922},[1905],{"type":19,"tag":595,"props":1906,"children":1907},{},[1908],{"type":24,"value":1909},"        self.main_layout.setStretch(1, 1)  # 按钮区域占1份高度  \n",{"type":19,"tag":595,"props":1911,"children":1912},{"class":597,"line":931},[1913],{"type":19,"tag":595,"props":1914,"children":1915},{},[1916],{"type":24,"value":1036},{"type":19,"tag":595,"props":1918,"children":1919},{"class":597,"line":940},[1920],{"type":19,"tag":595,"props":1921,"children":1922},{},[1923],{"type":24,"value":1045},{"type":19,"tag":595,"props":1925,"children":1926},{"class":597,"line":949},[1927],{"type":19,"tag":595,"props":1928,"children":1929},{},[1930],{"type":24,"value":1054},{"type":19,"tag":595,"props":1932,"children":1933},{"class":597,"line":958},[1934],{"type":19,"tag":595,"props":1935,"children":1936},{},[1937],{"type":24,"value":1938},"        self.pushButton_start.clicked.connect(self.start_loading)  \n",{"type":19,"tag":595,"props":1940,"children":1941},{"class":597,"line":967},[1942],{"type":19,"tag":595,"props":1943,"children":1944},{},[1945],{"type":24,"value":1946},"        self.pushButton_stop.clicked.connect(self.stop_loading)  \n",{"type":19,"tag":595,"props":1948,"children":1949},{"class":597,"line":976},[1950],{"type":19,"tag":595,"props":1951,"children":1952},{},[1953],{"type":24,"value":613},{"type":19,"tag":595,"props":1955,"children":1956},{"class":597,"line":985},[1957],{"type":19,"tag":595,"props":1958,"children":1959},{},[1960],{"type":24,"value":1961},"    def start_loading(self):  \n",{"type":19,"tag":595,"props":1963,"children":1964},{"class":597,"line":994},[1965],{"type":19,"tag":595,"props":1966,"children":1967},{},[1968],{"type":24,"value":1969},"        self.gif = QtGui.QMovie('loading.gif')  \n",{"type":19,"tag":595,"props":1971,"children":1972},{"class":597,"line":1003},[1973],{"type":19,"tag":595,"props":1974,"children":1975},{},[1976],{"type":24,"value":1977},"        # 设置GIF缩放模式，保持比例适应标签大小  \n",{"type":19,"tag":595,"props":1979,"children":1980},{"class":597,"line":1012},[1981],{"type":19,"tag":595,"props":1982,"children":1983},{},[1984],{"type":24,"value":1985},"        self.loading.setScaledContents(True)  \n",{"type":19,"tag":595,"props":1987,"children":1988},{"class":597,"line":1021},[1989],{"type":19,"tag":595,"props":1990,"children":1991},{},[1992],{"type":24,"value":1993},"        self.loading.setMovie(self.gif)  \n",{"type":19,"tag":595,"props":1995,"children":1996},{"class":597,"line":1030},[1997],{"type":19,"tag":595,"props":1998,"children":1999},{},[2000],{"type":24,"value":2001},"        self.gif.start()  \n",{"type":19,"tag":595,"props":2003,"children":2004},{"class":597,"line":1039},[2005],{"type":19,"tag":595,"props":2006,"children":2007},{},[2008],{"type":24,"value":613},{"type":19,"tag":595,"props":2010,"children":2011},{"class":597,"line":1048},[2012],{"type":19,"tag":595,"props":2013,"children":2014},{},[2015],{"type":24,"value":2016},"    def stop_loading(self):  \n",{"type":19,"tag":595,"props":2018,"children":2019},{"class":597,"line":1057},[2020],{"type":19,"tag":595,"props":2021,"children":2022},{},[2023],{"type":24,"value":2024},"        if hasattr(self, 'gif'):  # 避免未启动时点击停止报错  \n",{"type":19,"tag":595,"props":2026,"children":2027},{"class":597,"line":1066},[2028],{"type":19,"tag":595,"props":2029,"children":2030},{},[2031],{"type":24,"value":2032},"            self.gif.stop()  \n",{"type":19,"tag":595,"props":2034,"children":2035},{"class":597,"line":1075},[2036],{"type":19,"tag":595,"props":2037,"children":2038},{},[2039],{"type":24,"value":2040},"            self.loading.clear()  \n",{"type":19,"tag":595,"props":2042,"children":2043},{"class":597,"line":1084},[2044],{"type":19,"tag":595,"props":2045,"children":2046},{},[2047],{"type":24,"value":2048},"            self.loading.setScaledContents(False)  # 恢复默认状态  \n",{"type":19,"tag":595,"props":2050,"children":2051},{"class":597,"line":1092},[2052],{"type":19,"tag":595,"props":2053,"children":2054},{},[2055],{"type":24,"value":613},{"type":19,"tag":595,"props":2057,"children":2058},{"class":597,"line":1101},[2059],{"type":19,"tag":595,"props":2060,"children":2061},{},[2062],{"type":24,"value":1313},{"type":19,"tag":595,"props":2064,"children":2065},{"class":597,"line":1110},[2066],{"type":19,"tag":595,"props":2067,"children":2068},{},[2069],{"type":24,"value":1322},{"type":19,"tag":595,"props":2071,"children":2072},{"class":597,"line":1119},[2073],{"type":19,"tag":595,"props":2074,"children":2075},{},[2076],{"type":24,"value":2077},"        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"加载动画演示\"))  \n",{"type":19,"tag":595,"props":2079,"children":2080},{"class":597,"line":1128},[2081],{"type":19,"tag":595,"props":2082,"children":2083},{},[2084],{"type":24,"value":2085},"        self.pushButton_start.setText(_translate(\"MainWindow\", \"启动等待提示\"))  \n",{"type":19,"tag":595,"props":2087,"children":2088},{"class":597,"line":1137},[2089],{"type":19,"tag":595,"props":2090,"children":2091},{},[2092],{"type":24,"value":2093},"        self.pushButton_stop.setText(_translate(\"MainWindow\", \"停止等待提示\"))  \n",{"type":19,"tag":595,"props":2095,"children":2096},{"class":597,"line":1146},[2097],{"type":19,"tag":595,"props":2098,"children":2099},{},[2100],{"type":24,"value":613},{"type":19,"tag":595,"props":2102,"children":2103},{"class":597,"line":1155},[2104],{"type":19,"tag":595,"props":2105,"children":2106},{},[2107],{"type":24,"value":613},{"type":19,"tag":595,"props":2109,"children":2110},{"class":597,"line":1164},[2111],{"type":19,"tag":595,"props":2112,"children":2113},{},[2114],{"type":24,"value":1357},{"type":19,"tag":595,"props":2116,"children":2117},{"class":597,"line":1173},[2118],{"type":19,"tag":595,"props":2119,"children":2120},{},[2121],{"type":24,"value":613},{"type":19,"tag":595,"props":2123,"children":2124},{"class":597,"line":1182},[2125],{"type":19,"tag":595,"props":2126,"children":2127},{},[2128],{"type":24,"value":1375},{"type":19,"tag":595,"props":2130,"children":2131},{"class":597,"line":1191},[2132],{"type":19,"tag":595,"props":2133,"children":2134},{},[2135],{"type":24,"value":2136},"    app = QtWidgets.QApplication(sys.argv)  \n",{"type":19,"tag":595,"props":2138,"children":2139},{"class":597,"line":1200},[2140],{"type":19,"tag":595,"props":2141,"children":2142},{},[2143],{"type":24,"value":2144},"    MainWindow = QtWidgets.QMainWindow()  \n",{"type":19,"tag":595,"props":2146,"children":2147},{"class":597,"line":1209},[2148],{"type":19,"tag":595,"props":2149,"children":2150},{},[2151],{"type":24,"value":2152},"    ui = Ui_MainWindow()  \n",{"type":19,"tag":595,"props":2154,"children":2155},{"class":597,"line":1218},[2156],{"type":19,"tag":595,"props":2157,"children":2158},{},[2159],{"type":24,"value":2160},"    ui.setupUi(MainWindow)  \n",{"type":19,"tag":595,"props":2162,"children":2163},{"class":597,"line":1227},[2164],{"type":19,"tag":595,"props":2165,"children":2166},{},[2167],{"type":24,"value":2168},"    MainWindow.show()  \n",{"type":19,"tag":595,"props":2170,"children":2171},{"class":597,"line":1236},[2172],{"type":19,"tag":595,"props":2173,"children":2174},{},[2175],{"type":24,"value":2176},"    sys.exit(app.exec_())\n",{"type":19,"tag":505,"props":2178,"children":2179},{},[2180],{"type":19,"tag":20,"props":2181,"children":2182},{},[2183,2188,2190,2196,2198,2204,2206,2212,2214,2219,2221,2227],{"type":19,"tag":112,"props":2184,"children":2185},{},[2186],{"type":24,"value":2187},"Info:",{"type":24,"value":2189}," 说明\n上面代码中使用",{"type":19,"tag":27,"props":2191,"children":2193},{"className":2192},[],[2194],{"type":24,"value":2195},"QLabel",{"type":24,"value":2197},"类的",{"type":19,"tag":27,"props":2199,"children":2201},{"className":2200},[],[2202],{"type":24,"value":2203},"setMovie()方法",{"type":24,"value":2205},"为其设置要显示的GIF动画图片，该方法要求有一个",{"type":19,"tag":27,"props":2207,"children":2209},{"className":2208},[],[2210],{"type":24,"value":2211},"QMovie",{"type":24,"value":2213},"对象作为参数，",{"type":19,"tag":27,"props":2215,"children":2217},{"className":2216},[],[2218],{"type":24,"value":2211},{"type":24,"value":2220},"类是",{"type":19,"tag":27,"props":2222,"children":2224},{"className":2223},[],[2225],{"type":24,"value":2226},"QtGui",{"type":24,"value":2228},"模块中提供的一个用来显示简单且没有声音动画的类。",{"type":19,"tag":20,"props":2230,"children":2231},{},[2232,2234,2240,2242,2248],{"type":24,"value":2233},"运行程序，单击",{"type":19,"tag":27,"props":2235,"children":2237},{"className":2236},[],[2238],{"type":24,"value":2239},"启动等待提示",{"type":24,"value":2241},"按钮，将显示如图所示的运行效果；单击",{"type":19,"tag":27,"props":2243,"children":2245},{"className":2244},[],[2246],{"type":24,"value":2247},"停止等待提示",{"type":24,"value":2249},"按钮，将自动关闭等待提示框。",{"type":19,"tag":20,"props":2251,"children":2252},{},[2253],{"type":19,"tag":499,"props":2254,"children":2257},{"alt":2255,"src":2256},"loading.mp4","\u002Fimages\u002Fblog\u002Fpyqt5\u002Floading.mp4",[],{"type":19,"tag":36,"props":2259,"children":2261},{"id":2260},"_3滑块qslider",[2262,2264],{"type":24,"value":2263},"3  滑块：",{"type":19,"tag":27,"props":2265,"children":2267},{"className":2266},[],[2268],{"type":24,"value":2269},"QSlider",{"type":19,"tag":50,"props":2271,"children":2272},{},[],{"type":19,"tag":20,"props":2274,"children":2275},{},[2276,2278,2284,2286,2292,2294,2299,2301,2307],{"type":24,"value":2277},"PyQt5中提供了两个滑块控件，分别是水平滑块",{"type":19,"tag":27,"props":2279,"children":2281},{"className":2280},[],[2282],{"type":24,"value":2283},"HorizontalSlider",{"type":24,"value":2285},"和垂直滑块",{"type":19,"tag":27,"props":2287,"children":2289},{"className":2288},[],[2290],{"type":24,"value":2291},"VerticalSlider",{"type":24,"value":2293},"，但这两个滑块控件对应的类都是",{"type":19,"tag":27,"props":2295,"children":2297},{"className":2296},[],[2298],{"type":24,"value":2269},{"type":24,"value":2300},"类，该类中提供了一个",{"type":19,"tag":27,"props":2302,"children":2304},{"className":2303},[],[2305],{"type":24,"value":2306},"setOrientation()方法",{"type":24,"value":2308},"，通过设置该方法的参数，可以将滑块显示为水平或者垂直。",{"type":19,"tag":20,"props":2310,"children":2311},{},[2312,2317],{"type":19,"tag":27,"props":2313,"children":2315},{"className":2314},[],[2316],{"type":24,"value":2269},{"type":24,"value":2318},"滑块类的常用方法及说明如表所示。",{"type":19,"tag":96,"props":2320,"children":2321},{},[2322,2342],{"type":19,"tag":100,"props":2323,"children":2324},{},[2325],{"type":19,"tag":104,"props":2326,"children":2327},{},[2328,2335],{"type":19,"tag":108,"props":2329,"children":2330},{},[2331],{"type":19,"tag":112,"props":2332,"children":2333},{},[2334],{"type":24,"value":116},{"type":19,"tag":108,"props":2336,"children":2337},{},[2338],{"type":19,"tag":112,"props":2339,"children":2340},{},[2341],{"type":24,"value":124},{"type":19,"tag":126,"props":2343,"children":2344},{},[2345,2357,2369,2397,2410,2423,2435,2448,2509],{"type":19,"tag":104,"props":2346,"children":2347},{},[2348,2352],{"type":19,"tag":133,"props":2349,"children":2350},{},[2351],{"type":24,"value":137},{"type":19,"tag":133,"props":2353,"children":2354},{},[2355],{"type":24,"value":2356},"设置滑块最小值",{"type":19,"tag":104,"props":2358,"children":2359},{},[2360,2364],{"type":19,"tag":133,"props":2361,"children":2362},{},[2363],{"type":24,"value":150},{"type":19,"tag":133,"props":2365,"children":2366},{},[2367],{"type":24,"value":2368},"设置滑块最大值",{"type":19,"tag":104,"props":2370,"children":2371},{},[2372,2376],{"type":19,"tag":133,"props":2373,"children":2374},{},[2375],{"type":24,"value":349},{"type":19,"tag":133,"props":2377,"children":2378},{},[2379,2381,2384,2387,2389,2392,2395],{"type":24,"value":2380},"设置滑块显示方向，取值如下：",{"type":19,"tag":196,"props":2382,"children":2383},{},[],{"type":19,"tag":196,"props":2385,"children":2386},{},[],{"type":24,"value":2388},"◆ Qt.Horizontal：水平滑块",{"type":19,"tag":196,"props":2390,"children":2391},{},[],{"type":19,"tag":196,"props":2393,"children":2394},{},[],{"type":24,"value":2396},"◆ Qt.Vertical：垂直滑块",{"type":19,"tag":104,"props":2398,"children":2399},{},[2400,2405],{"type":19,"tag":133,"props":2401,"children":2402},{},[2403],{"type":24,"value":2404},"setPageStep()",{"type":19,"tag":133,"props":2406,"children":2407},{},[2408],{"type":24,"value":2409},"设置步长值，通过鼠标点击滑块时使用",{"type":19,"tag":104,"props":2411,"children":2412},{},[2413,2418],{"type":19,"tag":133,"props":2414,"children":2415},{},[2416],{"type":24,"value":2417},"setSingleStep()",{"type":19,"tag":133,"props":2419,"children":2420},{},[2421],{"type":24,"value":2422},"设置步长值，通过鼠标拖动滑块时使用",{"type":19,"tag":104,"props":2424,"children":2425},{},[2426,2430],{"type":19,"tag":133,"props":2427,"children":2428},{},[2429],{"type":24,"value":176},{"type":19,"tag":133,"props":2431,"children":2432},{},[2433],{"type":24,"value":2434},"设置滑块的值",{"type":19,"tag":104,"props":2436,"children":2437},{},[2438,2443],{"type":19,"tag":133,"props":2439,"children":2440},{},[2441],{"type":24,"value":2442},"setTickInterval()",{"type":19,"tag":133,"props":2444,"children":2445},{},[2446],{"type":24,"value":2447},"设置滑块的刻度间隔",{"type":19,"tag":104,"props":2449,"children":2450},{},[2451,2456],{"type":19,"tag":133,"props":2452,"children":2453},{},[2454],{"type":24,"value":2455},"setTickPosition()",{"type":19,"tag":133,"props":2457,"children":2458},{},[2459,2461,2464,2467,2469,2472,2475,2477,2480,2483,2485,2488,2491,2493,2496,2499,2501,2504,2507],{"type":24,"value":2460},"设置滑块刻度的标记位置，取值如下：",{"type":19,"tag":196,"props":2462,"children":2463},{},[],{"type":19,"tag":196,"props":2465,"children":2466},{},[],{"type":24,"value":2468},"◆ QSlider.NoTicks：不显示刻度，这是默认设置",{"type":19,"tag":196,"props":2470,"children":2471},{},[],{"type":19,"tag":196,"props":2473,"children":2474},{},[],{"type":24,"value":2476},"◆ QSlider.TicksBothSides：在滑块的两侧都显示刻度",{"type":19,"tag":196,"props":2478,"children":2479},{},[],{"type":19,"tag":196,"props":2481,"children":2482},{},[],{"type":24,"value":2484},"◆ QSlider.TicksAbove：在水平滑块的上方显示刻度",{"type":19,"tag":196,"props":2486,"children":2487},{},[],{"type":19,"tag":196,"props":2489,"children":2490},{},[],{"type":24,"value":2492},"◆ QSlider.TicksBelow：在水平滑块的下方显示刻度",{"type":19,"tag":196,"props":2494,"children":2495},{},[],{"type":19,"tag":196,"props":2497,"children":2498},{},[],{"type":24,"value":2500},"◆ QSlider.TicksLeft：在垂直滑块的左侧显示刻度",{"type":19,"tag":196,"props":2502,"children":2503},{},[],{"type":19,"tag":196,"props":2505,"children":2506},{},[],{"type":24,"value":2508},"◆ QSlider.TicksRight：在垂直滑块的右侧显示刻度",{"type":19,"tag":104,"props":2510,"children":2511},{},[2512,2516],{"type":19,"tag":133,"props":2513,"children":2514},{},[2515],{"type":24,"value":459},{"type":19,"tag":133,"props":2517,"children":2518},{},[2519],{"type":24,"value":2520},"获取滑块的当前值",{"type":19,"tag":20,"props":2522,"children":2523},{},[2524,2529],{"type":19,"tag":27,"props":2525,"children":2527},{"className":2526},[],[2528],{"type":24,"value":2269},{"type":24,"value":2530},"滑块类的常用信号及说明如表所示。",{"type":19,"tag":96,"props":2532,"children":2533},{},[2534,2555],{"type":19,"tag":100,"props":2535,"children":2536},{},[2537],{"type":19,"tag":104,"props":2538,"children":2539},{},[2540,2548],{"type":19,"tag":108,"props":2541,"children":2542},{},[2543],{"type":19,"tag":112,"props":2544,"children":2545},{},[2546],{"type":24,"value":2547},"信    号",{"type":19,"tag":108,"props":2549,"children":2550},{},[2551],{"type":19,"tag":112,"props":2552,"children":2553},{},[2554],{"type":24,"value":124},{"type":19,"tag":126,"props":2556,"children":2557},{},[2558,2570,2583,2596],{"type":19,"tag":104,"props":2559,"children":2560},{},[2561,2565],{"type":19,"tag":133,"props":2562,"children":2563},{},[2564],{"type":24,"value":480},{"type":19,"tag":133,"props":2566,"children":2567},{},[2568],{"type":24,"value":2569},"当滑块的值发生改变时发射该信号",{"type":19,"tag":104,"props":2571,"children":2572},{},[2573,2578],{"type":19,"tag":133,"props":2574,"children":2575},{},[2576],{"type":24,"value":2577},"sliderPressed",{"type":19,"tag":133,"props":2579,"children":2580},{},[2581],{"type":24,"value":2582},"当用户按下滑块时发射该信号",{"type":19,"tag":104,"props":2584,"children":2585},{},[2586,2591],{"type":19,"tag":133,"props":2587,"children":2588},{},[2589],{"type":24,"value":2590},"sliderMoved",{"type":19,"tag":133,"props":2592,"children":2593},{},[2594],{"type":24,"value":2595},"当用户拖动滑块时发射该信号",{"type":19,"tag":104,"props":2597,"children":2598},{},[2599,2604],{"type":19,"tag":133,"props":2600,"children":2601},{},[2602],{"type":24,"value":2603},"sliderReleased",{"type":19,"tag":133,"props":2605,"children":2606},{},[2607],{"type":24,"value":2608},"当用户释放滑块时发射该信号",{"type":19,"tag":505,"props":2610,"children":2611},{},[2612],{"type":19,"tag":20,"props":2613,"children":2614},{},[2615,2620,2622,2627],{"type":19,"tag":112,"props":2616,"children":2617},{},[2618],{"type":24,"value":2619},"Warning:",{"type":24,"value":2621}," 注意\n",{"type":19,"tag":27,"props":2623,"children":2625},{"className":2624},[],[2626],{"type":24,"value":2269},{"type":24,"value":2628},"滑块只能控制整数范围，因此它不适用于需要准确的大范围取值的场景。",{"type":19,"tag":20,"props":2630,"children":2631},{},[2632],{"type":19,"tag":112,"props":2633,"children":2634},{},[2635],{"type":24,"value":2636},"实例 使用滑块改变刻度值及标签中的字体大小",{"type":19,"tag":20,"props":2638,"children":2639},{},[2640,2642,2647,2649,2654,2656,2662,2664,2669,2671,2677,2679,2684,2686,2691,2693,2699,2701,2706],{"type":24,"value":2641},"在Qt Designer设计器中创建一个窗口，在窗口中分别添加一个",{"type":19,"tag":27,"props":2643,"children":2645},{"className":2644},[],[2646],{"type":24,"value":2283},{"type":24,"value":2648},"水平滑块和一个",{"type":19,"tag":27,"props":2650,"children":2652},{"className":2651},[],[2653],{"type":24,"value":2291},{"type":24,"value":2655},"垂直滑块，然后添加一个",{"type":19,"tag":27,"props":2657,"children":2659},{"className":2658},[],[2660],{"type":24,"value":2661},"HorizontalLayout",{"type":24,"value":2663},"水平布局管理器，在该布局管理器中添加一个",{"type":19,"tag":27,"props":2665,"children":2667},{"className":2666},[],[2668],{"type":24,"value":1591},{"type":24,"value":2670},"标签，用来显示文字。设计完成后，保存为",{"type":19,"tag":27,"props":2672,"children":2674},{"className":2673},[],[2675],{"type":24,"value":2676},".ui",{"type":24,"value":2678},"文件，并使用Pyuic工具将其转换为",{"type":19,"tag":27,"props":2680,"children":2682},{"className":2681},[],[2683],{"type":24,"value":559},{"type":24,"value":2685},"代码文件。在",{"type":19,"tag":27,"props":2687,"children":2689},{"className":2688},[],[2690],{"type":24,"value":559},{"type":24,"value":2692},"文件中通过绑定水平滑块的",{"type":19,"tag":27,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":24,"value":2698},"valueChanged信号",{"type":24,"value":2700},"，实现拖动水平滑块时，实时改变垂直滑块的刻度值，同时改变",{"type":19,"tag":27,"props":2702,"children":2704},{"className":2703},[],[2705],{"type":24,"value":1591},{"type":24,"value":2707},"标签中的字体大小。代码如下：",{"type":19,"tag":585,"props":2709,"children":2711},{"className":587,"code":2710,"language":589,"meta":7,"style":7},"from PyQt5 import QtCore, QtGui, QtWidgets  \n  \nclass Ui_MainWindow(object):  \n  \n    def setupUi(self, MainWindow):  \n        MainWindow.setObjectName(\"MainWindow\")  \n        MainWindow.resize(313, 196)  \n        self.centralwidget = QtWidgets.QWidget(MainWindow)  \n        self.centralwidget.setObjectName(\"centralwidget\")  \n        # 创建水平滑块  \n        self.horizontalSlider = QtWidgets.QSlider(self.centralwidget)  \n        self.horizontalSlider.setGeometry(QtCore.QRect(20, 10, 231, 22))  \n        self.horizontalSlider.setMinimum(8)         # 设置最小值为8  \n        self.horizontalSlider.setMaximum(72)         # 设置最大值为72  \n        self.horizontalSlider.setSingleStep(1)     # 设置通过鼠标拖动时的步长值  \n        self.horizontalSlider.setPageStep(1)         # 设置通过鼠标点击时的步长值  \n        self.horizontalSlider.setProperty(\"value\", 8)    # 设置默认值为8  \n        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) # 设置滑块为水平滑块  \n        # 设置在滑块上方显示刻度  \n        self.horizontalSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)  \n        self.horizontalSlider.setTickInterval(3)     # 设置刻度的间隔  \n        self.horizontalSlider.setObjectName(\"horizontalSlider\")  \n        # 创建垂直滑块  \n        self.verticalSlider = QtWidgets.QSlider(self.centralwidget)  \n        self.verticalSlider.setGeometry(QtCore.QRect(270, 20, 22, 171))  \n        self.verticalSlider.setMinimum(8)         # 设置最小值为8  \n        self.verticalSlider.setMaximum(72)         # 设置最大值为72  \n        self.verticalSlider.setOrientation(QtCore.Qt.Vertical)     # 设置滑块为垂直滑块  \n        self.verticalSlider.setInvertedAppearance(True)            # 设置刻度反方向显示  \n        # 设置在滑块右侧显示刻度  \n        self.verticalSlider.setTickPosition(QtWidgets.QSlider.TicksRight)  \n        self.verticalSlider.setTickInterval(3)                     # 设置刻度的间隔  \n        self.verticalSlider.setObjectName(\"verticalSlider\")  \n        # 创建一个水平布局管理器，主要用来放置显示文字的Label  \n        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)  \n        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 70, 251, 80))  \n        self.horizontalLayoutWidget.setObjectName(\"horizontalLayoutWidget\")  \n        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)  \n        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)  \n        self.horizontalLayout.setObjectName(\"horizontalLayout\")  \n        # 创建Label控件，用来显示文字  \n        self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)  \n        self.label.setAlignment(QtCore.Qt.AlignCenter) # 设置文字居中对齐  \n        self.label.setObjectName(\"label\")  \n        self.horizontalLayout.addWidget(self.label)       # 将Label添加到水平布局管理器中  \n        MainWindow.setCentralWidget(self.centralwidget)  \n        self.retranslateUi(MainWindow)  \n        QtCore.QMetaObject.connectSlotsByName(MainWindow)  \n        # 为水平滑块绑定valueChanged信号，在值发生更改时发射  \n        self.horizontalSlider.valueChanged.connect(self.setfontsize)  \n  \n    # 定义槽函数，根据水平滑块的值改变垂直滑块的值和Label控件的字体大小  \n    def setfontsize(self):  \n        value = self.horizontalSlider.value()  \n        self.verticalSlider.setValue(value)  \n        self.label.setFont(QtGui.QFont(\"楷体\", value))  \n  \n    def retranslateUi(self, MainWindow):  \n        _translate = QtCore.QCoreApplication.translate  \n        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \n        self.label.setText(_translate(\"MainWindow\", \"敢想敢为，注重细节\"))  \n  \nimport sys  \n# 程序入口，程序从此处启动PyQt设计的窗体  \nif __name__ == '__main__':  \n   app = QtWidgets.QApplication(sys.argv)  \n   MainWindow = QtWidgets.QMainWindow() # 创建窗体对象  \n   ui = Ui_MainWindow()           # 创建PyQt设计的窗体对象  \n   ui.setupUi(MainWindow)           # 调用PyQt窗体的方法对窗体对象进行初始化设置  \n   MainWindow.show()               # 显示窗体  \n   sys.exit(app.exec_())           # 程序关闭时退出进程\n",[2712],{"type":19,"tag":27,"props":2713,"children":2714},{"__ignoreMap":7},[2715,2722,2729,2736,2743,2750,2757,2765,2772,2779,2787,2795,2803,2811,2819,2827,2835,2843,2851,2859,2867,2875,2883,2891,2899,2907,2915,2923,2931,2939,2947,2955,2963,2971,2979,2987,2995,3003,3011,3019,3027,3035,3043,3051,3059,3067,3074,3081,3088,3096,3104,3111,3119,3127,3135,3143,3151,3158,3165,3172,3180,3188,3195,3202,3209,3216,3223,3230,3237,3244,3251],{"type":19,"tag":595,"props":2716,"children":2717},{"class":597,"line":598},[2718],{"type":19,"tag":595,"props":2719,"children":2720},{},[2721],{"type":24,"value":604},{"type":19,"tag":595,"props":2723,"children":2724},{"class":597,"line":607},[2725],{"type":19,"tag":595,"props":2726,"children":2727},{},[2728],{"type":24,"value":613},{"type":19,"tag":595,"props":2730,"children":2731},{"class":597,"line":616},[2732],{"type":19,"tag":595,"props":2733,"children":2734},{},[2735],{"type":24,"value":622},{"type":19,"tag":595,"props":2737,"children":2738},{"class":597,"line":625},[2739],{"type":19,"tag":595,"props":2740,"children":2741},{},[2742],{"type":24,"value":613},{"type":19,"tag":595,"props":2744,"children":2745},{"class":597,"line":634},[2746],{"type":19,"tag":595,"props":2747,"children":2748},{},[2749],{"type":24,"value":631},{"type":19,"tag":595,"props":2751,"children":2752},{"class":597,"line":643},[2753],{"type":19,"tag":595,"props":2754,"children":2755},{},[2756],{"type":24,"value":640},{"type":19,"tag":595,"props":2758,"children":2759},{"class":597,"line":652},[2760],{"type":19,"tag":595,"props":2761,"children":2762},{},[2763],{"type":24,"value":2764},"        MainWindow.resize(313, 196)  \n",{"type":19,"tag":595,"props":2766,"children":2767},{"class":597,"line":661},[2768],{"type":19,"tag":595,"props":2769,"children":2770},{},[2771],{"type":24,"value":658},{"type":19,"tag":595,"props":2773,"children":2774},{"class":597,"line":670},[2775],{"type":19,"tag":595,"props":2776,"children":2777},{},[2778],{"type":24,"value":667},{"type":19,"tag":595,"props":2780,"children":2781},{"class":597,"line":679},[2782],{"type":19,"tag":595,"props":2783,"children":2784},{},[2785],{"type":24,"value":2786},"        # 创建水平滑块  \n",{"type":19,"tag":595,"props":2788,"children":2789},{"class":597,"line":688},[2790],{"type":19,"tag":595,"props":2791,"children":2792},{},[2793],{"type":24,"value":2794},"        self.horizontalSlider = QtWidgets.QSlider(self.centralwidget)  \n",{"type":19,"tag":595,"props":2796,"children":2797},{"class":597,"line":697},[2798],{"type":19,"tag":595,"props":2799,"children":2800},{},[2801],{"type":24,"value":2802},"        self.horizontalSlider.setGeometry(QtCore.QRect(20, 10, 231, 22))  \n",{"type":19,"tag":595,"props":2804,"children":2805},{"class":597,"line":706},[2806],{"type":19,"tag":595,"props":2807,"children":2808},{},[2809],{"type":24,"value":2810},"        self.horizontalSlider.setMinimum(8)         # 设置最小值为8  \n",{"type":19,"tag":595,"props":2812,"children":2813},{"class":597,"line":715},[2814],{"type":19,"tag":595,"props":2815,"children":2816},{},[2817],{"type":24,"value":2818},"        self.horizontalSlider.setMaximum(72)         # 设置最大值为72  \n",{"type":19,"tag":595,"props":2820,"children":2821},{"class":597,"line":724},[2822],{"type":19,"tag":595,"props":2823,"children":2824},{},[2825],{"type":24,"value":2826},"        self.horizontalSlider.setSingleStep(1)     # 设置通过鼠标拖动时的步长值  \n",{"type":19,"tag":595,"props":2828,"children":2829},{"class":597,"line":733},[2830],{"type":19,"tag":595,"props":2831,"children":2832},{},[2833],{"type":24,"value":2834},"        self.horizontalSlider.setPageStep(1)         # 设置通过鼠标点击时的步长值  \n",{"type":19,"tag":595,"props":2836,"children":2837},{"class":597,"line":742},[2838],{"type":19,"tag":595,"props":2839,"children":2840},{},[2841],{"type":24,"value":2842},"        self.horizontalSlider.setProperty(\"value\", 8)    # 设置默认值为8  \n",{"type":19,"tag":595,"props":2844,"children":2845},{"class":597,"line":751},[2846],{"type":19,"tag":595,"props":2847,"children":2848},{},[2849],{"type":24,"value":2850},"        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) # 设置滑块为水平滑块  \n",{"type":19,"tag":595,"props":2852,"children":2853},{"class":597,"line":760},[2854],{"type":19,"tag":595,"props":2855,"children":2856},{},[2857],{"type":24,"value":2858},"        # 设置在滑块上方显示刻度  \n",{"type":19,"tag":595,"props":2860,"children":2861},{"class":597,"line":769},[2862],{"type":19,"tag":595,"props":2863,"children":2864},{},[2865],{"type":24,"value":2866},"        self.horizontalSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)  \n",{"type":19,"tag":595,"props":2868,"children":2869},{"class":597,"line":778},[2870],{"type":19,"tag":595,"props":2871,"children":2872},{},[2873],{"type":24,"value":2874},"        self.horizontalSlider.setTickInterval(3)     # 设置刻度的间隔  \n",{"type":19,"tag":595,"props":2876,"children":2877},{"class":597,"line":787},[2878],{"type":19,"tag":595,"props":2879,"children":2880},{},[2881],{"type":24,"value":2882},"        self.horizontalSlider.setObjectName(\"horizontalSlider\")  \n",{"type":19,"tag":595,"props":2884,"children":2885},{"class":597,"line":796},[2886],{"type":19,"tag":595,"props":2887,"children":2888},{},[2889],{"type":24,"value":2890},"        # 创建垂直滑块  \n",{"type":19,"tag":595,"props":2892,"children":2893},{"class":597,"line":805},[2894],{"type":19,"tag":595,"props":2895,"children":2896},{},[2897],{"type":24,"value":2898},"        self.verticalSlider = QtWidgets.QSlider(self.centralwidget)  \n",{"type":19,"tag":595,"props":2900,"children":2901},{"class":597,"line":814},[2902],{"type":19,"tag":595,"props":2903,"children":2904},{},[2905],{"type":24,"value":2906},"        self.verticalSlider.setGeometry(QtCore.QRect(270, 20, 22, 171))  \n",{"type":19,"tag":595,"props":2908,"children":2909},{"class":597,"line":823},[2910],{"type":19,"tag":595,"props":2911,"children":2912},{},[2913],{"type":24,"value":2914},"        self.verticalSlider.setMinimum(8)         # 设置最小值为8  \n",{"type":19,"tag":595,"props":2916,"children":2917},{"class":597,"line":832},[2918],{"type":19,"tag":595,"props":2919,"children":2920},{},[2921],{"type":24,"value":2922},"        self.verticalSlider.setMaximum(72)         # 设置最大值为72  \n",{"type":19,"tag":595,"props":2924,"children":2925},{"class":597,"line":841},[2926],{"type":19,"tag":595,"props":2927,"children":2928},{},[2929],{"type":24,"value":2930},"        self.verticalSlider.setOrientation(QtCore.Qt.Vertical)     # 设置滑块为垂直滑块  \n",{"type":19,"tag":595,"props":2932,"children":2933},{"class":597,"line":850},[2934],{"type":19,"tag":595,"props":2935,"children":2936},{},[2937],{"type":24,"value":2938},"        self.verticalSlider.setInvertedAppearance(True)            # 设置刻度反方向显示  \n",{"type":19,"tag":595,"props":2940,"children":2941},{"class":597,"line":859},[2942],{"type":19,"tag":595,"props":2943,"children":2944},{},[2945],{"type":24,"value":2946},"        # 设置在滑块右侧显示刻度  \n",{"type":19,"tag":595,"props":2948,"children":2949},{"class":597,"line":868},[2950],{"type":19,"tag":595,"props":2951,"children":2952},{},[2953],{"type":24,"value":2954},"        self.verticalSlider.setTickPosition(QtWidgets.QSlider.TicksRight)  \n",{"type":19,"tag":595,"props":2956,"children":2957},{"class":597,"line":877},[2958],{"type":19,"tag":595,"props":2959,"children":2960},{},[2961],{"type":24,"value":2962},"        self.verticalSlider.setTickInterval(3)                     # 设置刻度的间隔  \n",{"type":19,"tag":595,"props":2964,"children":2965},{"class":597,"line":886},[2966],{"type":19,"tag":595,"props":2967,"children":2968},{},[2969],{"type":24,"value":2970},"        self.verticalSlider.setObjectName(\"verticalSlider\")  \n",{"type":19,"tag":595,"props":2972,"children":2973},{"class":597,"line":895},[2974],{"type":19,"tag":595,"props":2975,"children":2976},{},[2977],{"type":24,"value":2978},"        # 创建一个水平布局管理器，主要用来放置显示文字的Label  \n",{"type":19,"tag":595,"props":2980,"children":2981},{"class":597,"line":904},[2982],{"type":19,"tag":595,"props":2983,"children":2984},{},[2985],{"type":24,"value":2986},"        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)  \n",{"type":19,"tag":595,"props":2988,"children":2989},{"class":597,"line":913},[2990],{"type":19,"tag":595,"props":2991,"children":2992},{},[2993],{"type":24,"value":2994},"        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 70, 251, 80))  \n",{"type":19,"tag":595,"props":2996,"children":2997},{"class":597,"line":922},[2998],{"type":19,"tag":595,"props":2999,"children":3000},{},[3001],{"type":24,"value":3002},"        self.horizontalLayoutWidget.setObjectName(\"horizontalLayoutWidget\")  \n",{"type":19,"tag":595,"props":3004,"children":3005},{"class":597,"line":931},[3006],{"type":19,"tag":595,"props":3007,"children":3008},{},[3009],{"type":24,"value":3010},"        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)  \n",{"type":19,"tag":595,"props":3012,"children":3013},{"class":597,"line":940},[3014],{"type":19,"tag":595,"props":3015,"children":3016},{},[3017],{"type":24,"value":3018},"        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)  \n",{"type":19,"tag":595,"props":3020,"children":3021},{"class":597,"line":949},[3022],{"type":19,"tag":595,"props":3023,"children":3024},{},[3025],{"type":24,"value":3026},"        self.horizontalLayout.setObjectName(\"horizontalLayout\")  \n",{"type":19,"tag":595,"props":3028,"children":3029},{"class":597,"line":958},[3030],{"type":19,"tag":595,"props":3031,"children":3032},{},[3033],{"type":24,"value":3034},"        # 创建Label控件，用来显示文字  \n",{"type":19,"tag":595,"props":3036,"children":3037},{"class":597,"line":967},[3038],{"type":19,"tag":595,"props":3039,"children":3040},{},[3041],{"type":24,"value":3042},"        self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)  \n",{"type":19,"tag":595,"props":3044,"children":3045},{"class":597,"line":976},[3046],{"type":19,"tag":595,"props":3047,"children":3048},{},[3049],{"type":24,"value":3050},"        self.label.setAlignment(QtCore.Qt.AlignCenter) # 设置文字居中对齐  \n",{"type":19,"tag":595,"props":3052,"children":3053},{"class":597,"line":985},[3054],{"type":19,"tag":595,"props":3055,"children":3056},{},[3057],{"type":24,"value":3058},"        self.label.setObjectName(\"label\")  \n",{"type":19,"tag":595,"props":3060,"children":3061},{"class":597,"line":994},[3062],{"type":19,"tag":595,"props":3063,"children":3064},{},[3065],{"type":24,"value":3066},"        self.horizontalLayout.addWidget(self.label)       # 将Label添加到水平布局管理器中  \n",{"type":19,"tag":595,"props":3068,"children":3069},{"class":597,"line":1003},[3070],{"type":19,"tag":595,"props":3071,"children":3072},{},[3073],{"type":24,"value":1036},{"type":19,"tag":595,"props":3075,"children":3076},{"class":597,"line":1012},[3077],{"type":19,"tag":595,"props":3078,"children":3079},{},[3080],{"type":24,"value":1045},{"type":19,"tag":595,"props":3082,"children":3083},{"class":597,"line":1021},[3084],{"type":19,"tag":595,"props":3085,"children":3086},{},[3087],{"type":24,"value":1054},{"type":19,"tag":595,"props":3089,"children":3090},{"class":597,"line":1030},[3091],{"type":19,"tag":595,"props":3092,"children":3093},{},[3094],{"type":24,"value":3095},"        # 为水平滑块绑定valueChanged信号，在值发生更改时发射  \n",{"type":19,"tag":595,"props":3097,"children":3098},{"class":597,"line":1039},[3099],{"type":19,"tag":595,"props":3100,"children":3101},{},[3102],{"type":24,"value":3103},"        self.horizontalSlider.valueChanged.connect(self.setfontsize)  \n",{"type":19,"tag":595,"props":3105,"children":3106},{"class":597,"line":1048},[3107],{"type":19,"tag":595,"props":3108,"children":3109},{},[3110],{"type":24,"value":613},{"type":19,"tag":595,"props":3112,"children":3113},{"class":597,"line":1057},[3114],{"type":19,"tag":595,"props":3115,"children":3116},{},[3117],{"type":24,"value":3118},"    # 定义槽函数，根据水平滑块的值改变垂直滑块的值和Label控件的字体大小  \n",{"type":19,"tag":595,"props":3120,"children":3121},{"class":597,"line":1066},[3122],{"type":19,"tag":595,"props":3123,"children":3124},{},[3125],{"type":24,"value":3126},"    def setfontsize(self):  \n",{"type":19,"tag":595,"props":3128,"children":3129},{"class":597,"line":1075},[3130],{"type":19,"tag":595,"props":3131,"children":3132},{},[3133],{"type":24,"value":3134},"        value = self.horizontalSlider.value()  \n",{"type":19,"tag":595,"props":3136,"children":3137},{"class":597,"line":1084},[3138],{"type":19,"tag":595,"props":3139,"children":3140},{},[3141],{"type":24,"value":3142},"        self.verticalSlider.setValue(value)  \n",{"type":19,"tag":595,"props":3144,"children":3145},{"class":597,"line":1092},[3146],{"type":19,"tag":595,"props":3147,"children":3148},{},[3149],{"type":24,"value":3150},"        self.label.setFont(QtGui.QFont(\"楷体\", value))  \n",{"type":19,"tag":595,"props":3152,"children":3153},{"class":597,"line":1101},[3154],{"type":19,"tag":595,"props":3155,"children":3156},{},[3157],{"type":24,"value":613},{"type":19,"tag":595,"props":3159,"children":3160},{"class":597,"line":1110},[3161],{"type":19,"tag":595,"props":3162,"children":3163},{},[3164],{"type":24,"value":1313},{"type":19,"tag":595,"props":3166,"children":3167},{"class":597,"line":1119},[3168],{"type":19,"tag":595,"props":3169,"children":3170},{},[3171],{"type":24,"value":1322},{"type":19,"tag":595,"props":3173,"children":3174},{"class":597,"line":1128},[3175],{"type":19,"tag":595,"props":3176,"children":3177},{},[3178],{"type":24,"value":3179},"        MainWindow.setWindowTitle(_translate(\"MainWindow\", \"MainWindow\"))  \n",{"type":19,"tag":595,"props":3181,"children":3182},{"class":597,"line":1137},[3183],{"type":19,"tag":595,"props":3184,"children":3185},{},[3186],{"type":24,"value":3187},"        self.label.setText(_translate(\"MainWindow\", \"敢想敢为，注重细节\"))  \n",{"type":19,"tag":595,"props":3189,"children":3190},{"class":597,"line":1146},[3191],{"type":19,"tag":595,"props":3192,"children":3193},{},[3194],{"type":24,"value":613},{"type":19,"tag":595,"props":3196,"children":3197},{"class":597,"line":1155},[3198],{"type":19,"tag":595,"props":3199,"children":3200},{},[3201],{"type":24,"value":1357},{"type":19,"tag":595,"props":3203,"children":3204},{"class":597,"line":1164},[3205],{"type":19,"tag":595,"props":3206,"children":3207},{},[3208],{"type":24,"value":1366},{"type":19,"tag":595,"props":3210,"children":3211},{"class":597,"line":1173},[3212],{"type":19,"tag":595,"props":3213,"children":3214},{},[3215],{"type":24,"value":1375},{"type":19,"tag":595,"props":3217,"children":3218},{"class":597,"line":1182},[3219],{"type":19,"tag":595,"props":3220,"children":3221},{},[3222],{"type":24,"value":1384},{"type":19,"tag":595,"props":3224,"children":3225},{"class":597,"line":1191},[3226],{"type":19,"tag":595,"props":3227,"children":3228},{},[3229],{"type":24,"value":1393},{"type":19,"tag":595,"props":3231,"children":3232},{"class":597,"line":1200},[3233],{"type":19,"tag":595,"props":3234,"children":3235},{},[3236],{"type":24,"value":1402},{"type":19,"tag":595,"props":3238,"children":3239},{"class":597,"line":1209},[3240],{"type":19,"tag":595,"props":3241,"children":3242},{},[3243],{"type":24,"value":1411},{"type":19,"tag":595,"props":3245,"children":3246},{"class":597,"line":1218},[3247],{"type":19,"tag":595,"props":3248,"children":3249},{},[3250],{"type":24,"value":1420},{"type":19,"tag":595,"props":3252,"children":3253},{"class":597,"line":1227},[3254],{"type":19,"tag":595,"props":3255,"children":3256},{},[3257],{"type":24,"value":1429},{"type":19,"tag":505,"props":3259,"children":3260},{},[3261],{"type":19,"tag":20,"props":3262,"children":3263},{},[3264,3268,3270,3275,3277,3283,3285,3290,3292,3297],{"type":19,"tag":112,"props":3265,"children":3266},{},[3267],{"type":24,"value":2187},{"type":24,"value":3269}," 说明\n上面代码中用到了水平布局管理器",{"type":19,"tag":27,"props":3271,"children":3273},{"className":3272},[],[3274],{"type":24,"value":2661},{"type":24,"value":3276},"，它实质上是一个",{"type":19,"tag":27,"props":3278,"children":3280},{"className":3279},[],[3281],{"type":24,"value":3282},"QHBoxLayout",{"type":24,"value":3284},"类的对象，它在这里的主要作用是放置",{"type":19,"tag":27,"props":3286,"children":3288},{"className":3287},[],[3289],{"type":24,"value":1591},{"type":24,"value":3291},"控件，这样",{"type":19,"tag":27,"props":3293,"children":3295},{"className":3294},[],[3296],{"type":24,"value":1591},{"type":24,"value":3298},"控件就只可以在水平布局管理器中显示，避免字体设置过大时，超出窗口范围的问题。",{"type":19,"tag":20,"props":3300,"children":3301},{},[3302,3304,3309],{"type":24,"value":3303},"运行程序，默认效果如图所示，当用鼠标拖动水平滑块的刻度时，垂直滑块的刻度值会随之变化。另外，",{"type":19,"tag":27,"props":3305,"children":3307},{"className":3306},[],[3308],{"type":24,"value":1591},{"type":24,"value":3310},"标签中的文字大小也会发生改变，如图所示。",{"type":19,"tag":3312,"props":3313,"children":3314},"ul",{},[3315],{"type":19,"tag":3316,"props":3317,"children":3318},"li",{},[3319],{"type":24,"value":3320},"默认效果",{"type":19,"tag":20,"props":3322,"children":3323},{},[3324],{"type":19,"tag":499,"props":3325,"children":3328},{"alt":3326,"src":3327},"Pasted image 20250901221002","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901221002.png",[],{"type":19,"tag":3312,"props":3330,"children":3331},{},[3332],{"type":19,"tag":3316,"props":3333,"children":3334},{},[3335],{"type":24,"value":3336},"拖动水平滑块改变垂直滑块和字体大小",{"type":19,"tag":20,"props":3338,"children":3339},{},[3340],{"type":19,"tag":499,"props":3341,"children":3344},{"alt":3342,"src":3343},"Pasted image 20250901221125","\u002Fimages\u002Fblog\u002Fpyqt5\u002FPasted%20image%2020250901221125.png",[],{"type":19,"tag":3346,"props":3347,"children":3348},"style",{},[3349],{"type":24,"value":3350},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":607,"depth":607,"links":3352},[3353,3355,3356],{"id":38,"depth":607,"text":3354},"1  ProgressBar：进度条",{"id":1539,"depth":607,"text":1542},{"id":2260,"depth":607,"text":3357},"3  滑块：QSlider","markdown","content:blog:2025-09-01-pyqt5-进度条类控件.md","content","blog\u002F2025-09-01-pyqt5-进度条类控件.md","blog\u002F2025-09-01-pyqt5-进度条类控件","md",1780801017960]