私自身Tkinterを最近使い始めたばかりなので、もしかしたら簡単にできるかもしれませんが
Buttonを押したまま固定する機能がどこを探しても見つかりませんでした。
もしやり方を知っている方が居れば教えていただけますでしょうか。
やり方が見つからかったため、強引に実装してみました。
かなり邪道なやり方なので、参考にならないかもしれませんが、下記に記します。
#####やりたい事
ボタンを使って、8bitのバイナリを編集するGUIを作りたい。
#####問題点
Tkinter ButtonでPushしたままにできない?
ButtonをDisableにはできる。
Buttonのラベル(表面上の絵)は変えられる
しかしButtonのreliefは変えられない?
生成されたボタンを破棄して、再度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()