Per una GUI tkinter, è necessario leggere un indirizzo esadecimale sotto forma di "0x00" per impostare un indirizzo I2C. Il modo Attualmente sto facendo è leggendo l'ingresso come stringa, convertendo la stringa in un intero, quindi la conversione che integer a un valore effettivo Hex come illustrato nel codice parziale di seguito:Convertire un numero intero in un valore esadecimale a 2 byte in Python
inizializzazione GUI:
self.I2CAddress=StringVar()
self.I2CAddress.set("0x00") #Sets Default value of '0x00'
Label(frame, text="Address: ").grid(row=5, column=4)
Entry(frame, textvariable=self.I2CAddress).grid(row=5, column=5)
Poi all'interno della funzione:
addr = self.I2CAddress.get()
addrint = int(addr, 16)
addrhex = hex(addrint)
Questo funziona per la maggior parte dei valori, ma il mio problema è che se entro in un piccolo valore stringa esadecimale come '0x01', converte al corretto intero di 1, ma poi viene convertito in un valore esadecimale di 0x1 anziché 0x01.
Sono un EE e ho un'esperienza di programmazione molto limitata, quindi qualsiasi aiuto è molto apprezzato.
Grazie! Ha funzionato come un incantesimo, lo apprezzo molto. –
Hai risposto così velocemente che devo aspettare qualche minuto prima di consentirmi, ma io assolutamente lo farò –
Puoi semplicemente usare '{: # 02x}' invece dell'esplicativo '0x'. Il '# aggiungerà il" prefisso standard ", che per i numeri esadecimali è' 0x'. (Anche questo funziona allo stesso modo con% -formatting e C 'printf', POSIX command-line' printf', ecc.) – abarnert