Folgendes Programm erzeugt ein Fenster, indem je nach Auswahl des Dropdowns mehr oder weniger Entrys und Labels erscheinen. Meine Frage nun: Wie kann ich gezielt auf die Einzelnen Entrys zugreifen? Ich möchte die Werte der Eingaben per Buttonclick in ein .txt-File schreiben. Eigentlich hapert es nur an der GET_ALL Funktion. Ich will den Inhalt der einzelnen Zellen, Variablen zuordnen. Mit .get() scheint es nicht zu funktionieren.
Ich hoffe auf Antworten von euch und bedanke mich schon einmal.
Gruß
Code: Alles auswählen
import tkinter as tk
from tkinter import *
def open_window():
X = fenster()
Eingabemaske(X)
schreiben(X)
X.mainloop()
# Fenster kreieren
def fenster():
X = tk.Tk()
X.wm_title('Test')
X.wm_geometry('600x600')
return X
def Eingabemaske(X):
def onChange(val):
if val == "Spiralverzahnt":
numb_lab = 4
l_text = [
'Achswinkel A',
'Achsversatz av',
'Zähnezahl Ritzel z1',
'Zähnezahl Tellerrad z2',
]
elif val == "Geradverzahnt":
numb_lab = 3
l_text = ['Schrägungswinkel', 'Eingriffswinkel alphan', 'Drehzahl n']
# Destroys all existing widgets in the container frame
for wid in container.winfo_children():
wid.destroy()
for u in range(numb_lab):
l = tk.Label(container, text=l_text[u])
l.grid(row=1 + u, column = 0, sticky=W)
e = tk.Entry(container)
e.grid(row=1 + u, column = 1, sticky=W)
options = ["Spiralverzahnt", "Geradverzahnt"]
var = tk.StringVar()
var.set("Spiralverzahnt")
op_menu = tk.OptionMenu(X, var, *options, command = onChange)
op_menu.place(x=450, y=0)
# Container frame for the Entry widgets
container = tk.Frame(X)
container.grid()
return container
#Button Werte in File schreiben
def schreiben(X):
b = tk.Button(X, text = 'Werte schreiben', command = write_input_geo)
#print(Eingabe)
b.place(x = 450, y = 50)
def GET_ALL():
'''Werte an Variablen übergeben'''
A = e.get(1)
av = e.get(2)
z1 = e.get(3)
z2 = e.get(4)
def write_input_geo():
Input = GET_ALL()
var = ['A','av','z1','z2']
for i in range(len(Input)):
Input[i] = [var[i],Input[i]]
with open(read.cfg()['input'],'w') as out:
for i in range(len(Input)):
out.write(str(Input[i][0])+ ' ' + str(Input[i][1]) + '\n')
open_window()