मेरे निम्नलिखित कार्यक्रम में मैं मूल रूप से एक संपादन क्षेत्र बनाना चाहता हूं, जिसे मैं इसे डबल क्लिक करने के बाद, संपादन क्षेत्र में लिखे गए पाठ के साथ एक लेबल में बदल देता हूं। यहाँ मेरा कोड है:

GUI.py:

from tkinter import *
import sys
import Classes
root = Tk()
root.wm_title("Schelling-Cup Alpha 1.0")
root.config(background = "#FFFFFF")

#VARIABLEN LADEN

playerlist = []

#BILDER WERDEN GELADEN

hintergrund = PhotoImage(file = "C:\\Users\\Jakub Pietraszko\\Desktop\\MarioKartProject\\Hintergrund2.png")
fotobutton1 = PhotoImage(file = "C:\\Users\\Jakub Pietraszko\\Desktop\\MarioKartProject\\Button_8Spieler_.png")
fotobutton2 = PhotoImage(file = "C:\\Users\\Jakub Pietraszko\\Desktop\\MarioKartProject\\Button_16Spieler_.png")


#FIRSTFRAME EDITED
firstFrame = Frame(root, width=400, height = 400)
firstFrame.grid(row = 0, column = 0, padx = 3, pady = 3)
x = Label(firstFrame, image = hintergrund)
x.grid(row = 0, column = 0)
def callback1():
    """Die Funktion für 8 Spieler, welche dann den entsprechenden Frame lädt."""
    Classes.EditToLabel(400, 400, firstFrame)
    pass
def callback2():
    """Die Funktion für 16 Spieler, welche dann den entsprechenden Frame lädt."""
    pass
B1 = Button(firstFrame, text = "Button1", bg = "#FFFFFF", width = 700, command = callback1)
B1.config(image = fotobutton1)
B1.place(x = 290, y = 250)
B2 = Button(firstFrame, text = "Button2", bg ="#FFFFFF", width = 700, command = callback2)
B2.config(image = fotobutton2)
B2.place(x = 290, y = 450)

#SECOUNDFRAME EDITED

secoundFrame = Frame(root, width = 400, height = 400)


root.mainloop() #GUI wird upgedated. Danach keine Elemente setzen

और यहाँ मेरी दूसरी फ़ाइल है, Classes.py:

from tkinter import *
import sys

x = 100
y = 100

class EditToLabel():
    def __init__(self, x_Koordinate, y_Koordinate, whichFrame):
        self.x_Koordinate = x_Koordinate
        self.y_Koordinate = y_Koordinate
        self.whichFrame = whichFrame

        global neuesEntry
        neuesEntry = Entry(whichFrame, width = 40)
        neuesEntry.place(x = x_Koordinate, y = y_Koordinate)

        neuesEntry.bind('<Double-Button-1>', self.done)
    def done(self):
        Eintrag = neuesEntry.get()
        neuesEntry.destroy()
        neuesLabel = Label(self.whichFrame, text = Eintrag, x = self.x_Koordinate, y = self.y_Koordinate)

अब समस्या यह है कि मुझे त्रुटि मिलती है और मुझे नहीं पता कि वास्तव में क्या करना है। निम्नलिखित त्रुटि संदेश अब मुझे मिलता है:

टिंकर कॉलबैक ट्रेसबैक में अपवाद (सबसे हालिया कॉल अंतिम):
फ़ाइल "C:...\Programs\Python\Python37\lib\tkinter__init__.py", लाइन १७०५, कॉल . में वापसी self.func(*args) TypeError: किया() 1 स्थितीय तर्क लेता है लेकिन 2 दिए गए थे

क्या कोई जानता है कि मैं क्या गलत करता हूं और मुझे एक उदाहरण दे सकता है कि इसे कैसे बेहतर बनाया जाए और इसे कैसे सुधारें?

1
Azzlak Spieser 13 फरवरी 2019, 19:01

1 उत्तर

सबसे बढ़िया उत्तर

टिंकर में एक विधि को बाध्य करते समय, ऐप घटना के बारे में जानकारी भेजता है और फ़ंक्शन को तर्क देता है, भले ही आप इसका उपयोग न करें।

प्रयत्न:

def done(self, event = None):
    ...

"ईवेंट" को डिफ़ॉल्ट पैरामीटर के रूप में सेट करने से आपको self.done() का उपयोग करने में मदद मिलती है .bind() के अलावा अन्य विधियों के माध्यम से।

2
Alisson Correa 13 फरवरी 2019, 20:37