2017-12-27 1169 views
1

我想知道,我怎麼能我按一下按鈕self.runButton.clicked.connect(self.iniciar)Pyqt5如何避免由while循環無限凍結程序?

程序凍結每次停止功能iniciar

的過程中,我不能做其他動作。

我希望定時器繼續在功能iniciar一直無限重複的工作。

也是self.runButton1停止功能iniciar按鈕。

我的代碼:

#!/usr/bin/env python3 

# Program created for play audios of time in zapoteco' 
# 
# Created by: Python 3.6, PyQt5 5.9.2. 
# 
# Author: Raul Espinosa [email protected] 
# 
# WARNING! All changes made in this file will be lost! 
# 
# Version 0.2 GUI 

import time 
import subprocess 

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_Form(object): 
    def setupUi(self, Form): 
     Form.setObjectName("Form") 
     Form.resize(383, 263) 
     palette = QtGui.QPalette() 
     brush = QtGui.QBrush(QtGui.QColor(164, 0, 0)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) 
     brush = QtGui.QBrush(QtGui.QColor(138, 226, 52)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush) 
     brush = QtGui.QBrush(QtGui.QColor(164, 0, 0)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) 
     brush = QtGui.QBrush(QtGui.QColor(173, 127, 168)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) 
     brush = QtGui.QBrush(QtGui.QColor(114, 159, 207)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) 
     brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush) 
     brush = QtGui.QBrush(QtGui.QColor(164, 0, 0)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) 
     brush = QtGui.QBrush(QtGui.QColor(138, 226, 52)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush) 
     brush = QtGui.QBrush(QtGui.QColor(164, 0, 0)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) 
     brush = QtGui.QBrush(QtGui.QColor(173, 127, 168)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) 
     brush = QtGui.QBrush(QtGui.QColor(114, 159, 207)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) 
     brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush) 
     brush = QtGui.QBrush(QtGui.QColor(46, 52, 54)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) 
     brush = QtGui.QBrush(QtGui.QColor(138, 226, 52)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush) 
     brush = QtGui.QBrush(QtGui.QColor(190, 190, 190)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) 
     brush = QtGui.QBrush(QtGui.QColor(114, 159, 207)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) 
     brush = QtGui.QBrush(QtGui.QColor(114, 159, 207)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) 
     brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) 
     brush.setStyle(QtCore.Qt.SolidPattern) 
     palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush) 
     Form.setPalette(palette) 
     Form.setPalette(palette) 
     self.label = QtWidgets.QLabel(Form) 
     self.label.setGeometry(QtCore.QRect(10, 0, 361, 181)) 
     self.label.setObjectName("label") 
     self.horizontalSlider = QtWidgets.QSlider(Form) 
     self.horizontalSlider.setGeometry(QtCore.QRect(110, 240, 160, 16)) 
     self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) 
     self.horizontalSlider.setObjectName("horizontalSlider") 
     self.horizontalSlider.setRange(0,100) 
     self.horizontalSlider.setSingleStep(1) 
     self.horizontalSlider.valueChanged.connect(self.valueHandler) 
     self.runButton = QtWidgets.QPushButton(Form) 
     self.runButton.setGeometry(QtCore.QRect(50, 180, 80, 25)) 
     self.runButton.setObjectName("runButton") 
     self.runButton.clicked.connect(self.iniciar) 
     self.runButton1 = QtWidgets.QPushButton(Form) 
     self.runButton1.setGeometry(QtCore.QRect(250, 180, 80, 25)) 
     self.runButton1.setObjectName("runButton1") 
     self.label_2 = QtWidgets.QLabel(Form) 
     self.label_2.setGeometry(QtCore.QRect(160, 220, 55, 17)) 
     self.label_2.setObjectName("label_2") 
     self.timer = QtCore.QTimer(Form) 
     self.timer.timeout.connect(self.Time) 
     self.timer.start(1000) 
     self.lcdNumber = QtWidgets.QLCDNumber(Form) 
     self.lcdNumber.setGeometry(QtCore.QRect(280, 0, 101, 61)) 
     self.lcdNumber.setInputMethodHints(QtCore.Qt.ImhNone) 
     self.lcdNumber.setFrameShape(QtWidgets.QFrame.NoFrame) 
     self.lcdNumber.setFrameShadow(QtWidgets.QFrame.Raised) 
     self.lcdNumber.setSmallDecimalPoint(True) 
     self.lcdNumber.setDigitCount(5) 
     self.lcdNumber.setMode(QtWidgets.QLCDNumber.Dec) 
     self.lcdNumber.setSegmentStyle(QtWidgets.QLCDNumber.Flat) 
     self.lcdNumber.display(time.strftime("%H"+":"+"%M")) 
     #tiempo = time.strftime("%H"+":"+"%M") 
     #print (tiempo) 
     #self.lcdNumber.setProperty("value", 12:20) 
     self.lcdNumber.setObjectName("lcdNumber") 
     self.retranslateUi(Form) 
     QtCore.QMetaObject.connectSlotsByName(Form) 

    def Time(self): 
     self.lcdNumber.display(time.strftime("%H"+":"+"%M")) 

    def valueHandler(self,value): 
     scaledValue = float(value)/100 
     print (scaledValue) , type(scaledValue) 
     return scaledValue 

    def retranslateUi(self, Form): 
     _translate = QtCore.QCoreApplication.translate 
     Form.setWindowTitle(_translate("Form", "XIGABA")) 
     Form.setToolTip(_translate("Form", "<html><head/><body><pre style=\" margin-top:0px; margin-bottom:15px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-