PythonのGUI作成ライブラリのTkinterを用いて色を表示・更新するGUIを作成しています。
そんな中、TkinterのLabelを上書きしたいのですが、Labelが現在あるラベルの下に追加されてしまいます。
上書きするにはどうすれば良いでしょうか。
Pyhton
1import tkinter as tk 2import tkinter.font as tkFont 3import colorsys 4from transrate import int_to_hex 5from change_key_num import change_num 6 7# 初期値HSV 8colorH = 240 9colorS = 167 10colorV = 155 11 12#ウィンドウ・キャンバスサイズ 13geometry_x = 1680 14geometry_y = 1050 15canvasSquare = 400 16canvasPlace_x = (geometry_x/2) - (canvasSquare/1.5) 17canvasPlace_y = (geometry_y/2) - (canvasSquare/1.5) 18 19root = tk.Tk() 20fontStyle = tkFont.Font(family='Lucida Grande', size=20) 21 22colorR, colorG, colorB = colorsys.hsv_to_rgb(colorH/360, colorS/255, colorV/255) 23colorRectangle = '#' + int_to_hex(round(colorR*256)) + int_to_hex(round(colorG*256)) + int_to_hex(round(colorB*256)) 24 25buffer = tk.StringVar() 26buffer.set('') 27 28class MyRectangle(tk.Frame): 29 """ 30 MyRectangle: 四角形を作成・編集する 31 """ 32 def __init__(self, master=None): 33 super().__init__(master) 34 self.pack() 35 36 # キャンバスエリア 37 self.canvas = tk.Canvas(root, width=canvasSquare, height=canvasSquare, bd=0, highlightthickness=0) 38 self.canvas.place(x=canvasPlace_x, y=canvasPlace_y) # キャンバスエリアを(0,0)で指定 39 40 # 四角形で塗りつぶし 41 self.canvas.create_rectangle(0, 0, canvasSquare, canvasSquare, fill=colorRectangle, outline=colorRectangle) 42 43 #キー操作 44 def key(event): 45 global colorH, colorS, colorV, colorR, colorG, colorB 46 global colorRectangle 47 48 colorH, colorS, colorV = change_num(event, colorH, colorS, colorV) 49 colorR, colorG, colorB = colorsys.hsv_to_rgb(colorH / 360, colorS / 256, colorV / 256) 50 colorRectangle = '#' + int_to_hex(round(colorR * 256)) + int_to_hex(round(colorG * 256)) + int_to_hex(round(colorB * 256)) 51 52 color_text = u'変更値 H: ' + str(colorH) + u' S: ' + str(colorS) + u' V: ' + str(colorV) 53 HSV = tk.Label(root, text=color_text, foreground='white', background='black', font=fontStyle) 54 HSV.place(x=0, y=0) 55 HSV.pack(anchor='nw') 56 57 # キャンバスエリア 58 canvas = tk.Canvas(root, width=canvasSquare, height=canvasSquare, bd=0, highlightthickness=0) 59 canvas.place(x=canvasPlace_x, y=canvasPlace_y) 60 # キャンバスエリアを(0,0)で指定 61 # 四角形で塗りつぶし 62 canvas.create_rectangle(0, 0, canvasSquare, canvasSquare, fill=colorRectangle, outline=colorRectangle) 63 64 65# 初期値と現在の値を表示する 66color_text = u'初期値 H: ' + str(colorH) + u' S: ' + str(colorS) + u' V: ' + str(colorV) 67HSV = tk.Label(root, text=color_text, foreground='white', background='black', font=fontStyle) 68HSV.place(x=0, y=0) 69HSV.pack(anchor='nw') 70 71color_text=u'変更値 H: ' + str(colorH) + u' S: ' + str(colorS) + u' V: ' + str(colorV) 72HSV = tk.Label(text=color_text, foreground='white', background='black', font=fontStyle) 73HSV.place(x=0, y=0) 74HSV.pack(anchor='nw') 75 76frame = tk.Frame(root, width=0, height=0) 77frame.bind("<Key>", MyRectangle.key) 78frame.focus_set() 79frame.pack() 80 81# ウインドウのタイトルを定義する 82root.title(u'Color Matching') 83 84# ここでウインドウサイズを定義する 85root.geometry(str(geometry_x) + 'x' + str(geometry_y)) 86root.config(bg = 'black') 87 88rec = MyRectangle(master=root) 89rec.mainloop() 90 91with open('test_name.txt', 'w') as f: 92 f.write('colorH: ' + str(colorH) + ' colorS: ' + str(colorS) + ' colorV: ' + str(colorV))
- 開発環境
macOS Catalina
Python3.7
PyCharm 2018.3.7
質問下手で申し訳ありません。ご回答が可能でしたらよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/26 04:48