インプットのポートの数だけ、for文ぶん回して、、スライダー並べたのは、いいけれど、スライダーの値を表示できない、厳密に言えば、スライダーと、値を表示するラベルを1対1でn個、並べたいのだけれど、自動で、このやり方で、ウィンドウを生成すると、変数が、上書きされて、有効になるのは、最後の変数だけに、なっていまう、トラブル、が、発生、
CustomTkinterが、現在、進行中なプロジェクトなのもあのですが、
以下のように、一番目のスライダーの値が、PY_VARで、読み込めず、一番目のスライダーの値も、二番目の値も、二番目のラベルに表示されて、いまいます、
これは、Tkの仕様の問題で、ボタンをfor文で作った場合などは、bindメソッドで、対処できるようなのですが、1日、費やしても、解決、出来ませんでした、℃素人でも、ないので、地雷を踏んで、仕様の変更、やり直し、は、あり得ないので、
外観の変更で、システムトラブルとか、あり得ないので、おそらく、どこも、導入してない、Ttk(Tkの、次期、バージョン)のウィジェットを一部使って、組んで見たら、簡単に、再現、できました、
(ttk.labelとttk.scaleの組み合わせで、scaleの変数をlabelのテキストに読ませただけです)
見た目が、良いで、始めたので、これでは、許せません、
試しに、ttk.labelとctksliderを付き合わせてみたら、オッケー、
デフォルト値で起動、スライダーの値も読めました、
つまずいた人には、重要なTipsだと思ったので、まとめました、
コードを残して、おきますが、責任は負えませんので、あしからず、、
スライダーを5個、for文で、書きました、、
import tkinter as tk
import tkinter.ttk as ttk
import customtkinter
customtkinter.set_appearance_mode("dark")
customtkinter.set_default_color_theme("blue")
app = customtkinter.CTk()
app.geometry("510x300")
frame = customtkinter.CTkFrame(master=app)
frame.grid(row=0, column=0, padx=20, pady=0)
def slider_event(value):
# global var
var = value
print(value)
add_page = 5
for page in range(0,add_page):
default_var = 10
var = tk.IntVar(master=frame, value=default_var)
slider = customtkinter.CTkSlider(master=frame, width=400, from_=0, to=100, number_of_steps=25, border_width=7, variable=var, command=slider_event)
label_ver = ttk.Label(master=frame, width=10, textvariable=var, foreground="gray70", background="gray17")
label_ver.grid(row=3+page*add_page, column=0, padx=0)
slider.grid(row=3+page*add_page, column=1, columnspan=2, pady=(20,20))
app.mainloop()
値も正常に、見えます、、
