ラベルを使用してデータを表示しています。しかし、私はそれらのすべてを同じウィンドウに収めることができないので、お互いの下に配置された非常に多くのラベルを持っています。スクロールバーを使ってラベルをスクロールしたいしかし、私がこれを読んだので、これはあまり簡単ではありません。私が理解しているように、フレームを使用してすべてのラベルを集め、そのフレームをキャンバスに挿入してから、スクロールバーと並行して使用することができます。 私は私のラベルを作成するために使用しています機能は、私は私の機能走ったときに、空白のウィンドウが生成されるキャンバスに埋め込まれたフレームの内側の場所を使用する方法は?
def onFrameConfigure(canvas):
'''Reset the scroll region to encompass the inner frame'''
canvas.configure(scrollregion=canvas.bbox("all"))
root = tk.Tk()
root.geometry("400x400")
canvas = tk.Canvas(root, borderwidth=0, background="#ffffff")
frame = tk.Frame(canvas, background="#ffffff")
vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsb.set)
vsb.pack(side="right", fill="y")
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw")
frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas))
Tab(frame, 20)
と一緒に次のコードを追加しようとしてきた
def Tab(root, y):
#Print the team
playerTeam = Label(root, bg = "white", text = "Hello")
playerTeam.config(height = 1, width = 13)
playerTeam.place(x=20,y=y)
です。 しかし、.placeの代わりに.gridを使用すると、Tab()では正しく動作し、ラベルがウィンドウに表示されます。ただし、Tab()を複数回呼び出すと、ラベルがウィンドウから消えてしまい、スクロールする機能が使用できなくなります。
.place関数を正しく動作させるにはどうすればよいですか。 また、スクロールバーを正しく動作させるにはどうすればよいですか。 ありがとう
ブライアン、ありがとうございます。しかし、私は本当にグリッドを見て、ジオメトリマネージャーは私のインターフェイスデザインでうまく動作しています。しかし、それに加えて、なぜスクロールバーが私が与えた例ではうまくいかないでしょうか? –
フレームが小さいので、 'scrollregion'が設定されていないため、スクロールバーは機能しません。 'scrollregion'をキャンバスよりも大きな値に設定すると、スクロールバーが機能します。ユーザーがウィジェットをインタラクティブに動かせるようにする設計を除いて、 'pack'や' grid'ではうまくいかないインタフェース設計はほとんどないと確信しています。 –
ありがとうございました。私はパック/グリッドの方法を使用することができるだろうが、現時点では、ラベルがあまりにも緊密にセットされなくても、ラベルを得るのが難しいと感じた。 –