LoginSignup
1
1

More than 3 years have passed since last update.

TkinterでBinaryで表示可能なSpinboxを作る

Last updated at Posted at 2020-07-13

先ほど投稿した記事の続き
https://qiita.com/Nomisugi/items/cb2fa4f26cdf0a7888c5

Python TkinterのSpinboxでBinary対応させるコードを書いてみる。
TkinterのSpinboxは内部的にもBinaryに対応しておらず、加算結果を0か1で戻します。
その性質を利用して、コードを記述してみました。
このサンプルコードは8bit固定コードとなります。
BIN.png

: 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()
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1