私の目的は、起動時にプロンプトを表示し、入力された整数に基づいて、多くのキャンバスをフレームに収めることです。フレームの高さは固定されていなければなりません(キャンバスも同様です)が、ウィンドウのサイズに応じて幅が変わり、キャンバスに均等に分配されます。pack()で動作しないキャンバスの幅のサイズを変更する
これは4つまでのキャンバスでうまく動作します。その後、キャンバスは最大ウィンドウに収まらなくなります。
さらに、キャンバスの高さがフレームの高さよりも低いため、キャンバスの上下に20ピクセルの空白の灰色のフレームが表示されないのはなぜですか?
from tkinter import *
from tkinter import simpledialog
b=[]
root = Tk()
no_of_players=simpledialog.askinteger(prompt="Enter here", title="No of participants")
status_frame=Frame(root, bg='gray', height=100)
status_frame.pack(fill=X)
for i in range(no_of_players):
c=Canvas(status_frame, bg="orange")
b.append(c)
b[i].pack(side=LEFT,fill=X, expand=True)
root.mainloop()
EDIT
from tkinter import *
from tkinter import simpledialog
b=[]
root = Tk()
no_of_players=simpledialog.askinteger(prompt="Enter here", title="No of participants")
status_frame=Frame(root, bg='gray', height=500)
status_frame.pack(fill=X)
for i in range(no_of_players):
c=Canvas(status_frame, width=1, height=100, bg="orange")
b.append(c)
b[i].pack(side=LEFT,fill=X, expand=True)
root.mainloop()
私はあなたの質問を理解していません。あなたはキャンバスの幅を決して設定しないので、何か(デフォルトでは私のマシン上では378ピクセル)になります。それがやっていないとあなたは何を期待していますか? – Novel
@ジョナサンここで2番目の[asnwer](http://stackoverflow.com/questions/22835289/how-to-get-tkinter-canvas-to-dynamically-resize-to-window-width)で提案されているようなものです。私は基本的に、キャンバスの数をX方向、つまりキャンバスの数に基づいてフレームを完全に埋めることを望むので、ウィンドウのサイズを変更しても利用可能なフレーム幅を分割する必要があります。 –
'status_frame'に一時的に色を付けて、そのエッジがどこにあるかを確認することをお勧めします。私の推測は、彼らはあなたがどこにいると思うかではないということです。 –