2016-11-23 17 views
0

このサンプルコードでは、青い四角形の幅を変更するいくつかの方法を試しました。何も動作していないようです。コードでは、 "a"は1.00と0.00の間のfloat変数を表します。この値は "b"を計算するために使用されます。これは青色の長方形の望ましい幅をピクセル単位で表したものです。私はその値を生成するかなり複雑なコードを持っていますが、少なくともそれは機能します。コードが機能するためには、青い矩形の幅は "b"に依存しなければなりません。私は "Canvas.itemconfig()"を試してみましたが、うまくいきませんでした。tkinterのキャンバスウィジェットの長方形の幅を変更する

import tkinter 
from tkinter import * 

root = Tk() 

root.maxsize(320,240)  # Sets max size of window 
root.minsize(320,240) 

canvas_height = 23 
canvas_width = 315 

w = Canvas(root, width=canvas_width, height=canvas_height) 
w.pack() 
w.create_rectangle(5, canvas_height, canvas_width, 2, fill="yellow") 
w.create_rectangle(5, canvas_height, canvas_width, 2, fill="blue") 

a = 1.0 # More complicated code creates this float between 0.00 and 1.00. It is a percentage of the desired 'blue rectangle' width 
b = int(a * canvas_width) 

root.mainloop() 

誰でも助けていただければ幸いです。

p.s.私はStackoverflowコミュニティには新しく、質問に答えるのを容易にするために何かできることがあれば教えてください。

+0

"それはうまくいかない"とはどういう意味ですか?エラーメッセージが表示されましたか?意図された結果は何であり、実際の結果は何でしたか? –

+0

[ask]と[mcve]の記事には、バグの解決方法やヘルプの依頼方法に関するヒントが含まれています。 –

答えて

0

長方形は、反対側のコーナーの2つの座標で定義されます。左端の座標を取得し、x座標に幅を加え、右端の座標を設定するために使用します。

まず、あなたが後でそれを変更できるようにオブジェクトIDを追跡:

blue = w.create_rectangle(5, canvas_height, canvas_width, 2, fill="blue") 

を座標を取得し、サイズを変更するには...

x0, y0, x1, y1 = w.coords(blue) 

いくつかの計算を行う...

x1 = x0 + b 

w.coords(blue, x0, y0, x1, y1) 
+0

私にはフォローアップの質問が1つあります。まず、あなたが私に与えたことが働いた。私は数秒でカウントダウンするループを作った。 1秒間カウントした後、 "DownButton"を呼び出し、 "c"(c = c/100)を計算します。次に、DownButton()はChange()を呼び出し、幅のパーセンテージである "a"を計算し、最後にコードを使用して青い矩形を更新します。ただし、青は、タイマーが完了すると更新されます。 Timer()を削除し、tkinter Buttonsを使用してUpButton()とDownButton()を呼び出すと、正常に動作します。答えをありがとう、あなたが分を持っている場合は、この1つを把握するのに役立つことができますか? :) –

+0

@ChrisF:イベントループがイベントを処理する機会を得るたびに画面が更新されます。このサイトには多くの質問と回答があります。 –

関連する問題