Erstellen eines popup-message-box mit einem Eingabefeld
Erstellen Sie ein popup-message-box, die fordert Benutzer zur Eingabe eines Eingabe. Ich habe diese Methode innerhalb einer Klasse. Ich bin stützend, meinen code auf dieser Leitfaden durch java2s.
class MyDialog:
def __init__(self, parent):
top = self.top = Toplevel(parent)
Label(top, text="Value").pack()
self.e = Entry(top)
self.e.pack(padx=5)
b = Button(top, text="OK", command=self.ok)
b.pack(pady=5)
def ok(self):
print "value is", self.e.get()
self.top.destroy()
root = Tk()
d = MyDialog(root)
root.wait_window(d.top)
Aber in diesem top = self.top = Toplevel(parent)
bei mir nicht funktioniert.
Habe ich ein mockup von dem, was ich versuche zu erreichen.
Meine Programm-Struktur sieht wie folgt aus:
class MainUI:
def__int__(self):
...
self.initUI()
def initUI(self):
.......
Popup = Button(self, text="Enter Value", command=self.showPopup)
def showPopup(self):
#create the popup with an Entry here
Wie kann ich eine message-box in Python, die die Benutzereingaben entgegennimmt?
- Wenn Sie sagen, "senden eingegebenen Daten zurück zum Hauptformular" was meinst du? Diese Daten angezeigt werden soll in ein widget?
- Durch das senden von Daten zurück, ich meine der Wert ist das Textfeld in einer Variablen gespeichert, die ich Bearbeiten später im Programm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin ein wenig verwirrt über Ihre zwei verschiedene code-Blöcke. Nur die Adressierung der ersten code-block, passiert nichts, weil Sie niemals in die mainloop. Das zu tun, müssen Sie rufen Sie
root.mainloop()
. Die typische Art und Weise, dies zu tun ist das hinzufügen einer Schaltfläche, um root-widget, und binden Sie eine callback-Funktion, die den Button (enthältd=MyDialog()
undroot.wait_window(d.top)
)Hier einige grundlegende code, ich hoffe das tut, was Sie wollen ...
Bekomme ich den Wert aus dem Popup-und der Haupt-Programm (nehmen Sie einen Blick auf die lambda-Funktion im Zusammenhang mit b2).
Hauptfenster:
"Klick mich" - Fenster:
Hauptfenster und "Klick mich" ist geöffnet:
mainWindow
Klasse? Vielleicht habe ich die Methodedef getVal(self): return self.e
auf diepopupWindow
Klasse Wie rufe ich diese aus dermainWindow
Klasse ?entryValue()
tut, was ich tun wollte. Danke!!!top=self.top=Toplevel(master)
überself.top=Toplevel(master)
?