Fortsetzung des zuvor veröffentlichten Artikels https://qiita.com/Nomisugi/items/cb2fa4f26cdf0a7888c5
Schreiben wir den Code, um Binary mit Spinbox von Python Tkinter kompatibel zu machen. Die Spinbox von Tkinter unterstützt Binary intern nicht und gibt das Additionsergebnis als 0 oder 1 zurück. Ich habe versucht, den Code mit dieser Eigenschaft zu schreiben. Dieser Beispielcode ist ein fester 8-Bit-Code.
: Binspinbox.py
import tkinter as tk
class BinSpinbox(tk.Spinbox):
def __init__(self, *args, **kwargs):
self.var = tk.StringVar()
super().__init__(*args, **kwargs, textvariable=self.var, from_=0,to=0xff,
increment=1, command=self.cange )
self.val = 0
def set(self, val):
self.val = val
self.var.set("0b{:08b}".format(int(val)))
def get(self):
hstr = self.var().get()
return int(hstr, 2)
def cange(self):
val = super().get()
print(val)
if(val == '1'):
self.val = self.val+1
if(self.val > 0xff):
self.val = 0x00
else:
if(self.val == 0x00 ):
self.val = 0xff
else:
self.val = self.val-1
self.set(self.val)
if __name__ == "__main__":
print("BinSpinbox")
win = tk.Tk()
hex = BinSpinbox(win)
hex.set(0x55)
hex.pack()
win.title("BinSpinbox test")
win.mainloop()