TkinterでButtonを押したままにする機能を作ってみる
私自身Tkinterを最近使い始めたばかりなので、もしかしたら簡単にできるかもしれませんが
Buttonを押したまま固定する機能がどこを探しても見つかりませんでした。
もしやり方を知っている方が居れば教えていただけますでしょうか。
やり方が見つからかったため、強引に実装してみました。
かなり邪道なやり方なので、参考にならないかもしれませんが、下記に記します。
やりたい事
ボタンを使って、8bitのバイナリを編集するGUIを作りたい。
問題点
Tkinter ButtonでPushしたままにできない?
ButtonをDisableにはできる。
Buttonのラベル(表面上の絵)は変えられる
しかしButtonのreliefは変えられない?
解決策 及び 作った結果
生成されたボタンを破棄して、再度pushしたままのreliefで全部作りなおしてみました。
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()
Author And Source
この問題について(TkinterでButtonを押したままにする機能を作ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/Nomisugi/items/c40d4116e8778bed913d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .