Поскольку self.serial()
работает в цикле: self.master.after(1000, self.serial)
, и он открывает последовательный порт каждый раз: self.ser = serial.Serial("/dev/ttyACM0",9600,timeout=0.1)
, просто закрывая последовательный порт и self.master.withdraw()
не остановит следующий 1 прогон self.serial
от открытия его снова. Попробуйте просто закрыть порт после каждого использования:
def serial(self)
self.ser = serial.Serial("/dev/ttyACM0",9600,timeout=0.1)
self.ser.write(b'1') ##commanding the arduino to read the smartcard info
self.info = self.ser.readline()
self.ser.close() #closing here
self.data.set(self.info)
self.master.after(1000,self.serial)
print (A)
И удаление его из self.home()
:
def home(self)
self.master.withdraw() #rather than here
self.pick = Toplevel(self.master)
self.game = StartPage(sef.pick)
Кроме того, опечатка:
self.game = PETwithSC(sef.pick)
должно быть:
self.game = PETwithSC(self.pick)
Надеюсь, это поможет