मेरे पास यह लूप है जो एक्स चलाता है और बदलता है, मुझे इसे टिंकर लेबल में कैसे रखना चाहिए? अग्रिम में धन्यवाद।
from tkinter import *
import time
root = Tk()
def x_loop():
x = 0
while x <= 100:
time.sleep(2)
x = x + 1
l = Label(root, text = x_loop).pack(pady = 20)
root.mainloop()
2 जवाब
टिंकर डोसेंट, जबकि लूप्स की तरह, इसका कारण यह है कि थोड़ी देर के लिए लूप डोसेंट मेनलूप पर वापस आने तक वापस आ जाता है और इसलिए आप इस समय के दौरान काम नहीं कर रहे हैं।
टिंकर इसके लिए .after(*ms,*func)
विधि प्रदान करता है और नीचे प्रयोग किया जाता है। tk.Label
के टेक्स्ट को बदलने के लिए भी आप कई तरीके अपना सकते हैं। मुझे लगता है कि इनहेरिट किए गए विकल्प textvariable का उपयोग करने का सबसे अच्छा तरीका है।
जैसे ही var सेट होता है, टेक्स्टवैरिएबल एक tk.*Variable
होना चाहिए और tk.Label
को कॉन्फ़िगर करना चाहिए।
नीचे काम कर रहे उदाहरण की जाँच करें:
import tkinter as tk
x = 0
def change_text():
global x
var.set(x)
x +=1
root.after(100,change_text)#instead of a while loop that block the mainloop
root = tk.Tk()
var = tk.StringVar()
lab = tk.Label(root, textvariable=var)
lab.pack()
change_text()
root.mainloop()
StringVar
को @ Atlas435 के रूप में उपयोग करने के बजाय, आप इस सरल विधि का उपयोग कर सकते हैं:
import tkinter as tk
def x_loop():
global x
if x <= 100:
x += 1
# Update the label
label.config(text=x)
# after 2000 ms call `x_loop` again
root.after(2000, x_loop)
x = 0
root = tk.Tk()
label = tk.Label(root, text=x)
label.pack(pady=20)
# STart the loop
x_loop()
root.mainloop()
संबंधित सवाल
नए सवाल
python-3.x
पायथन प्रोग्रामिंग के बारे में प्रश्नों के लिए जो भाषा के संस्करण 3+ के लिए विशिष्ट हैं। सभी पायथन सवालों पर अधिक जेनेरिक [अजगर] टैग का उपयोग करें, और केवल यह जोड़ें यदि आपका प्रश्न संस्करण-विशिष्ट है। पायथन 2 प्रश्नों के लिए [अजगर -2] टैग का उपयोग करें।