python - लेबल पर पाठ बदलना




python-3.x tkinter (5)

मुझे किसी लेबल या किसी पैरामीटर के मान को बदलने के लिए एक बाध्यकारी उपयोग करने में समस्या हो रही है। यह मेरा कोड है:

from tkinter import*

class MyGUI:
  def __init__(self):
    self.__mainWindow = Tk()
    #self.fram1 = Frame(self.__mainWindow)
    self.labelText = 'Enter amount to deposit'
    self.depositLabel = Label(self.__mainWindow, text = self.labelText)
    self.depositEntry = Entry(self.__mainWindow, width = 10)
    self.depositEntry.bind('<Return>', self.depositCallBack)
    self.depositLabel.pack()
    self.depositEntry.pack()

    mainloop()

  def depositCallBack(self,event):
    self.labelText = 'change the value'
    print(self.labelText)

myGUI = MyGUI()

जब मैं इसे चलाता हूं, तो मैं एंट्रीबॉक्स पर क्लिक करता हूं और एंटर दबाता हूं, उम्मीद करता हूं कि लेबल वैल्यू को 'वैल्यू चेंज' में बदल देगा। हालांकि, जब यह उस पाठ को प्रिंट करता है, तो लेबल अपरिवर्तित रहता है।

इसी तरह की समस्याओं और मुद्दों पर अन्य प्रश्नों को देखने से, मैंने पाया है कि कक्षा के बाहर इनमें से कुछ के साथ कैसे काम करना है, लेकिन मुझे कक्षा के अंदर ऐसा करने में कुछ कठिनाइयां हैं।

इसके अलावा, एक तरफ ध्यान दें, tkinter में "मास्टर" क्या भूमिका निभाता है?


Answers

लेबल बनाने के दौरान आप textvariable को भी परिभाषित कर सकते हैं, और लेबल में टेक्स्ट को अपडेट करने के लिए टेक्स्टवैरिबल को बदल सकते हैं। यहां एक उदाहरण दिया गया है:

labelText = Stringvar()
depositLabel = Label(self, textvariable=labelText)
depositLabel.grid()

def updateDepositLabel(txt) # you may have to use *args in some cases
    labelText.set(txt)

मैन्युअल रूप से depositLabel में पाठ को अपडेट करने की कोई आवश्यकता नहीं है। यह आपके लिए है।


मैंने एक छोटा टिंकर एप्लिकेशन बनाया जो बटन क्लिक करने के बाद लेबल सेट करता है

#!/usr/bin/env python
from Tkinter import *
from tkFileDialog import askopenfilename
from tkFileDialog import askdirectory


class Application:
    def __init__(self, master):
        frame = Frame(master,width=200,height=200)
        frame.pack()

        self.log_file_btn = Button(frame, text="Select Log File", command=self.selectLogFile,width=25).grid(row=0)
        self.image_folder_btn = Button(frame, text="Select Image Folder", command=self.selectImageFile,width=25).grid(row=1)
        self.quite_button = Button(frame, text="QUIT", fg="red", command=frame.quit,width=25).grid(row=5)

        self.logFilePath =StringVar()
        self.imageFilePath = StringVar()
        self.labelFolder = Label(frame,textvariable=self.logFilePath).grid(row=0,column=1)
        self.labelImageFile = Label(frame,textvariable = self.imageFilePath).grid(row = 1,column=1)

        def selectLogFile(self):
            filename = askopenfilename()
            self.logFilePath.set(filename)

        def selectImageFile(self):
            imageFolder = askdirectory()
            self.imageFilePath.set(imageFolder)

root = Tk()
root.title("Geo Tagging")
root.geometry("600x100")
app = Application(root)
root.mainloop()

self.labelText = 'change the value'

उपरोक्त वाक्य 'मूल्य बदलें' संदर्भ के लिए लेबलटेक्स्ट बनाते हैं, लेकिन जमा लेबल को नहीं बदलते हैं।

जमा लेबल बदलने के लिए, निम्नलिखित सेटों में से एक का उपयोग करें:

self.depositLabel['text'] = 'change the value'

या

self.depositLabel.config(text='change the value')

लेबल के मान को बदलने के लिए config विधि का उपयोग करें:

top = Tk()

l = Label(top)
l.pack()

l.config(text = "Hello World", width = "50" , )

पेप 8 का अनुपालन करने के लिए, आपको सापेक्ष / पूर्ण आयात करने के लिए पाइथन पथ पर अपना प्रोजेक्ट पथ शामिल करना चाहिए।

ऐसा करने के लिए, आप इस उत्तर को देख सकते हैं: PYTHONPATH में स्थायी रूप से एक निर्देशिका जोड़ें







python python-3.x tkinter