@Heracles: Das ist einer der sehr wenigen Fälle in denen `place()` sinnvoll ist.
Allerdings solltest Du Dein Programm erst einmal sauber und fehlerfrei schreiben, bevor Du mit „eye candy“ anfängst.
Also kein Sternchen-Import, objektorientierte Programmierung statt globaler Variablen, vernünftige Namen, die Datei auch tatsächlich wieder schliessen, und das am besten mit Hilfe der ``with``-Anweisung, …
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import, division, print_function
import io
import Tkinter as tk
class MainFrame(tk.Frame):
def __init__(self, master, out_file):
tk.Frame.__init__(self, master)
self.out_file = out_file
self.background_image = tk.PhotoImage(file='test.gif')
tk.Label(self, image=self.background_image).place(x=0, y=0)
tk.Label(self, text='First Name').grid(row=0)
tk.Label(self, text='Last Name').grid(row=1)
tk.Label(self, text='Zip Code').grid(row=2)
self.first_name_label = tk.Entry(self)
self.last_name_label = tk.Entry(self)
self.zip_code_label = tk.Entry(self)
self.first_name_label.grid(row=0, column=1)
self.last_name_label.grid(row=1, column=1)
self.zip_code_label.grid(row=2, column=1)
tk.Button(
self, text='Exit', command=self.quit
).grid(row=3, column=0, sticky=tk.W, pady=4)
tk.Button(
self, text='Go', command=self.write_entry_fields
).grid(row=3, column=1, sticky=tk.W, pady=4)
def write_entry_fields(self):
self.out_file.write(
u'{0}\n{1}\n'.format(
self.first_name_label.get(), self.last_name_label.get()
)
)
def main():
with io.open('test.txt', 'a', encoding='utf-8') as out_file:
root = tk.Tk()
main_frame = MainFrame(root, out_file)
main_frame.pack()
root.mainloop()
if __name__ == '__main__':
main()