Code: Alles auswählen
''' Diese Module öffent ein Child Fenster und erwartet eine Eingabe
Der eingegebene Wert soll in das aufrufende Feld aus dem Parent
Fenster übernommen werden
'''
import tkinter as tk
__version__ = '0.1'
class ChildWindow(object):
returnval = None
def __init__(self, parent, values):
self.root = tk.Toplevel(parent)
self.values = values
self.setup('dummy')
def setup(self, text):
self.text = text
self.labl = tk.Label(self.root, height=2, text=self.values)
self.entry = tk.Entry(self.root, justify='center')
self.entry.insert(tk.END, self.text)
self.ok = tk.Button(self.root, width=5, text='OK',
command=self.kill_and_save)
self.labl.grid()
self.entry.grid()
self.ok.grid()
ChildWindow.returnval = self.text
def kill_and_save(self):
ChildWindow.returnval = self.entry.get()
self.root.destroy()
if __name__ == '__main__':
class ParentWindow:
def __init__(self, parent):
self.parent = parent
self.data1 = 'test1'
self.data2 = 'test2'
self.entry1 = tk.Entry(self.parent, justify='center')
self.entry2 = tk.Entry(self.parent, justify='center')
self.show_btn = tk.Button(self.parent, text='Show value',
command=self.print_value)
self.entry1.insert(tk.END, self.data1)
self.entry2.insert(tk.END, self.data2)
self.entry1.bind("<Double-Button-1>",
lambda
p1=self.parent, p2=self.data1:self.popup(p1, p2))
self.entry2.bind("<Double-Button-1>",
lambda
p1=self.parent, p2=self.data2:self.popup(p1, p2))
self.entry1.grid()
self.entry2.grid()
self.show_btn.grid()
def popup(self, evt, data):
ret = ChildWindow(self.parent, data)
def print_value(self):
# for debug only
print(ChildWindow.returnval)
print(self.data1, self.data2)
root = tk.Tk()
app = ParentWindow(root)
root.mainloop()