gpt4 book ai didi

python - 如何在 PyQt 中使用按钮在 while 循环中退出程序

转载 作者:太空狗 更新时间:2023-10-30 03:02:06 27 4
gpt4 key购买 nike

我有以下代码,将在 PyQt 中单击“开始”按钮后启动:

def Start(self):
import time
import os
import RPi.GPIO as GPIO
import datetime

GPIO.setmode(GPIO.BCM)
DEBUG = 1

os.system('clear')

# SPI port on GPIO
SPICLK = 18
SPIMISO = 23
SPICS = 25

# set up the SPI interface pins
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)

GPIO.output(SPICS, True)
GPIO.output(SPICS, False) # bring CS low
while True:
adcout = 0
read_adc = 0
#s=time.clock()
for i in range(25):
GPIO.output(SPICLK, True)
GPIO.output(SPICLK, False)
adcout <<= 1
if (GPIO.input(SPIMISO)==1):
adcout |= 0x1
time.sleep(0.085)
if (GPIO.input(SPIMISO)==0):
read_adc = adcout
millivolts = read_adc * ( 2500.0 /(pow(2,22)))
read_adc = "%d" % read_adc
millivolts = "%d" % millivolts

if DEBUG:
print millivolts, "mV (ADC)"

上面的程序是用于 ADC 读取的,它将在单击名为“开始”的按钮后启动:self.pushButton.clicked.connect(self.Start)

我还有另一个名为“停止”的 pushButton_2,单击此按钮,上述过程应该会停止。请提出建议,以便我能够做到这一点。

最佳答案

除了 what I suggested 之外不需要做任何事情在您关于该主题的其他问题中:只需使用 processEvents。只要您可以足够频繁地调用它(但不是 频繁),它就应该完全按照您的要求执行。使用您的第二个示例,以下内容对我来说效果很好:

  def Start(self):
if not self.started:
self.started = True
self.StartLoop()

def Stop(self):
if self.started:
self.started = False

def StartLoop(self):
DEBUG = 1
while self.started:
print "LED on "
time.sleep(0.05)
print "LED off "
time.sleep(0.085)
QtGui.qApp.processEvents()

关于python - 如何在 PyQt 中使用按钮在 while 循环中退出程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23057031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com