嗨,Tkinter 愛好者。我正在為研究目的創建一個界面。我想建立一個顯示幾個滑塊問題的視窗。我能夠使用以下代碼動態創建這些。
我現在遇到的問題是每個滑塊物件都具有相同的名稱,因此無法使用 SliderQ.get() 函式。我嘗試在字典中的元素(Q_1、Q_2 等)之后命名每個滑塊,但沒有成功。
如何檢索每個滑塊的值并將它們保存在串列或字典中。
from tkinter import *
from customtkinter import *
root = CTk()
root.geometry("400x500")
SlideAsk = {"Q_1":"This is my question 1.",
"Q_2":"This is my question 2.",
"Q_3":"This is my question 3.",
"Q_4":"This is my question 4."}
startrow = 0
startcol = 1
def CreateSlider(SlideAsk):
global startrow,startcol
for q in SlideAsk:
label_Question = CTkLabel(master=root,text= SlideAsk[q])
label_Question.grid(row=startrow, column=0, columnspan=1, pady=10, padx=10, sticky="w")
startrow =1
SliderQ = CTkSlider(master=root,from_=1,to=5,number_of_steps=4)
SliderQ.grid(row=startrow, column=0, columnspan=2, pady=10, padx=20, sticky="w")
startrow =1
CreateSlider(SlideAsk)
root.mainloop()
uj5u.com熱心網友回復:
我建議您使用 Python 類,因為它會更容易操作 GUI 元素。
至于您的問題,將滑塊放在串列中(在 for 回圈中)將允許您以后使用它們:
#!/usr/bin/python3
import tkinter as tk
SlideAsk = {"Q_1":"This is my question 1.",
"Q_2":"This is my question 2.",
"Q_3":"This is my question 3.",
"Q_4":"This is my question 4."}
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.wm_geometry("400x500")
# button to show sliders values
self.del_button = tk.Button(self, text="display", command=self.display_sliders)
self.del_button.grid(row=0,column=3)
# label to show sliders values
self.status_text=tk.StringVar(self)
self.status = tk.Label(self, textvariable=self.status_text)
self.status.grid(row=1,column=3)
# sliders
self.sliders_list=[]
startrow = 0
startcol = 1
simple_cpt = 0
for q in SlideAsk:
label_Question = tk.Label(text= SlideAsk[q])
label_Question.grid(row=startrow, column=0, columnspan=1, pady=10, padx=10, sticky="w")
startrow =1
self.sliders_list.append(tk.Scale(self, from_=1,to=5))
self.sliders_list[simple_cpt].grid(row=startrow, column=0, columnspan=2, pady=10, padx=20, sticky="w")
simple_cpt = 1
startrow =1
def display_sliders(self):
text=""
for i in range(len(self.sliders_list)):
text =list(SlideAsk.keys())[i] " : " str(self.sliders_list[i].get()) " | "
self.status_text.set(text)
if __name__=="__main__":
app = SampleApp()
app.mainloop()
包含滑塊的串列是sliders_list,它在單擊按鈕顯示時使用。對于串列中的每個滑塊,我們獲取其值,并將其顯示在標簽中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/492994.html
上一篇:生成所有可用等寬字體的串列
