0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TkinterでButtonを押したままにする機能を作ってみる

Last updated at Posted at 2020-07-16

私自身Tkinterを最近使い始めたばかりなので、もしかしたら簡単にできるかもしれませんが
Buttonを押したまま固定する機能がどこを探しても見つかりませんでした。
もしやり方を知っている方が居れば教えていただけますでしょうか。

やり方が見つからかったため、強引に実装してみました。
かなり邪道なやり方なので、参考にならないかもしれませんが、下記に記します。

#####やりたい事
ボタンを使って、8bitのバイナリを編集するGUIを作りたい。

#####問題点
Tkinter ButtonでPushしたままにできない?
ButtonをDisableにはできる。
Buttonのラベル(表面上の絵)は変えられる
しかしButtonのreliefは変えられない?

#####解決策 及び 作った結果
PushButton.png

生成されたボタンを破棄して、再度pushしたままのreliefで全部作りなおしてみました。

BinEditor.py
import sys
import tkinter as tk

class BinEditFrame(tk.Frame):
    def __init__(self, master):
        super().__init__(master)
        self.val = 0x00
        self.bits = []
        for i in range(8):
            btn = tk.Button(self,text=str(i), relief='raised', command=self.callback(i))
            btn.pack(sid='right')
            self.bits.append(btn)
        print("start")

    def callback(self, i):
        def push():
            self.val ^= (1<<i)
            print(self.val)

            #All Button Delete
            for bit in self.bits:
                bit.destroy()
            self.bits.clear()

            #All Button ReCreate
            for j in range(8):
                if (self.val & (1<<j) > 0):
                    btn = tk.Button(self,text=str(j), relief='sunken',
                                    command=self.callback(j) )
                else:
                    btn = tk.Button(self,text=str(j), relief='raised',
                                    command=self.callback(j) )
                btn.pack(sid='right')
                self.bits.append(btn)
        return push
        

if __name__ == "__main__":
    print("BinEditor")
    win = tk.Tk()
    be = BinEditFrame(win)
    be.pack()
    win.mainloop()



0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?