Привет, у меня есть мой код, который подключен к моему графическому интерфейсу tkinter, и я прочитал, что tkinter зависает, когда в нем есть цикл, поскольку он также является циклом. Итак, что я пытаюсь сделать, это дать этой функции некоторое время, например, 45 секунд, а затем разорвать цикл по истечении этого времени. Я также пробовал многопоточность, но я знаю, как правильно ее реализовать, поэтому и придумала это решение. Но после того, как я попробовал это, цикл не прерывается через 45 секунд. Что я делаю неправильно? Будет ли это работать? Заранее большое спасибо. Я просмотрел много уроков по многопоточности и очередям, но для начинающего, как я, это очень сложно, поэтому, если это возможно, пожалуйста, помогите мне. Еще раз спасибо!
import serial
port = '/dev/ttyUSB0'
balance = 0
timeout = time.time() + 45
#get Pulse from Arduino
def getPulse():
try:
ser = serial.Serial(port, 9600)
while True:
read = ser.readline()
try:
value = int(read, 10)
if (value != 0):
print(value)
break
except ValueError:
pass
finally:
return value
#Update Balance
def balanceCounter(coins):
total = 0
total += coins
return total
def getCoins():
pulse = getPulse()
coinvalue = 0
if pulse == 1:
coinvalue = 1
print("1 Inserted")
elif pulse == 5:
coinvalue = 5
print("5 Inserted")
elif pulse == 10:
coinvalue = 10
print("10 Inserted")
return coinvalue
def mainCounter(numpages):
global balance
#input target Sample Amount
targetValue = numpages
tbalance = 0
try:
while tbalance <= int(targetValue):
coins = getCoins()
balance = balanceCounter(coins)
tbalance += balance
print("Total balance : "+str(tbalance))
if tbalance >= int(targetValue) or time.time() > timeout:
break
finally:
return tbalance