Hi,
es soll ein Button angeklickt werden, danach soll der erste Wert von einer Liste in einem Textfeld unterhalb angezeigt werden, beim nächsten klick der zweite Wert usw.
Ich kann ein Fenster erstellen, ein Button, ein Textfeld und weiß irgendwie muss ich die Liste mit einer for Schleife auslesen.
wahrscheinlich ein ziemlich einfaches Problem, dennoch komm ich nicht auf die Lösung was daran liegen könnte das ich Anfänger bin.
Schon mal vielen Dank für eure Hilfe
Werte einer Liste auslesen je Klick eines Buttons in tkinter
Nein, die Liste muss nicht per for-Schleife ausgelesen werden. Du willst ja einen bestimmten Wert haben, und das durch ein Ereignis. Sowas wie “warte auf Button, dann hier weitermachen” gibt’s bei GUIs (so ohne weiteres) nicht.
Was hast du bis jetzt geschrieben?
Was hast du bis jetzt geschrieben?
-
- User
- Beiträge: 4
- Registriert: Dienstag 6. April 2021, 20:57
from openpyxl import load_workbook
wb=load_workbook(r"C:\test.xlsx")
ws=wb.active
cell_values = []
for row_of_cells in ws['F2':'F99']:
for cell in row_of_cells:
if cell is not None:
cell_values.append(cell.value)
print(cell_values)
Gibt aus der Excel Datei meine Daten als Liste aus. Jetzt möchte ein Wert nach dem anderen bei mausklick auf einen Button ausgeben. Was mir jetzt noch eingefallen aus der Liste eine mySQL Datenbank zu machen, auch bei numpy war ich schon und komm da nicht weiter. Vielleicht mit einem Array?
Mir wäre es lieber wenn die Daten aus der Excel Tabelle lokal auf dem PC höchstens in der Zwischenablage gespeichert werden würden
Danke
wb=load_workbook(r"C:\test.xlsx")
ws=wb.active
cell_values = []
for row_of_cells in ws['F2':'F99']:
for cell in row_of_cells:
if cell is not None:
cell_values.append(cell.value)
print(cell_values)
Gibt aus der Excel Datei meine Daten als Liste aus. Jetzt möchte ein Wert nach dem anderen bei mausklick auf einen Button ausgeben. Was mir jetzt noch eingefallen aus der Liste eine mySQL Datenbank zu machen, auch bei numpy war ich schon und komm da nicht weiter. Vielleicht mit einem Array?
Mir wäre es lieber wenn die Daten aus der Excel Tabelle lokal auf dem PC höchstens in der Zwischenablage gespeichert werden würden
Danke
Ich verstehe Dein Problem nicht. Du hast doch schon Code, der die Excel-Tabelle liest, was willst Du denn jetzt mit einer anderen Datenhaltung? Da hängst Du doch dann am selben Problem, dass Du eine GUI programmieren willst.
Da niemand hier weiß, wie weit Du schon mit GUIs bist, mit Wissen, wie man Klassen schreibt, mit Funktionen im Allgemeinen, weiß ich jetzt nicht, wo ich ansetzen muß.
Als erster Schritt wäre es, eine saubere GUI aufzubauen. Dazu gibt es hier im Forum etliche Posts, wo gezeigt wird, wie so eine GUI grundsätzlich aussiehte. Du brauchst ein Fenster, einen Button und ein Eingabefeld. Wenn Du soweit bist, können wir hier den nächsten Schritt diskutieren, wie man den Button mit Deiner Exceltabelle zusammenbringt.
Da niemand hier weiß, wie weit Du schon mit GUIs bist, mit Wissen, wie man Klassen schreibt, mit Funktionen im Allgemeinen, weiß ich jetzt nicht, wo ich ansetzen muß.
Als erster Schritt wäre es, eine saubere GUI aufzubauen. Dazu gibt es hier im Forum etliche Posts, wo gezeigt wird, wie so eine GUI grundsätzlich aussiehte. Du brauchst ein Fenster, einen Button und ein Eingabefeld. Wenn Du soweit bist, können wir hier den nächsten Schritt diskutieren, wie man den Button mit Deiner Exceltabelle zusammenbringt.
-
- User
- Beiträge: 4
- Registriert: Dienstag 6. April 2021, 20:57
Hallo, hab jetzt mal folgende GUI gebaut:
import pandas as pd
from tkinter import *
def einlesen():
df=pd.read_excel(input_field.get())
print(df)
window =Tk()
window.title("Excel Listen Ausgabe")
window.geometry("450x300")
input_field =Entry(window)
input_field.place(x=0, y=25)
output_field= Text(window)
output_field.grid(row=0, column=1)
output_field.place(x=0 , y=00)
output_field.insert(END,"Hier Ausgabe")
ok_button=Button(window,text="Datei einlesen",command=einlesen)
ok_button.place(x=0, y=50)
Nächster_Datensatz=Button(window,text="hier draufdrücken um Wert A1 in der Excel auszugeben nochmal drauf dann A2 usw.")
Nächster_Datensatz.place(x=0, y=100)
input_field.pack()
ok_button.pack()
Nächster_Datensatz.pack()
output_field.pack()
window.mainloop()
Wie könnte es jetzt weiter gehen??
Mein Problem ist es immer noch bei einer Aktion (z.B. drücken von p) der ersten Wert einer Liste auzugeben, dann wieder drücken von p zweiter wert etc.
import pandas as pd
from tkinter import *
def einlesen():
df=pd.read_excel(input_field.get())
print(df)
window =Tk()
window.title("Excel Listen Ausgabe")
window.geometry("450x300")
input_field =Entry(window)
input_field.place(x=0, y=25)
output_field= Text(window)
output_field.grid(row=0, column=1)
output_field.place(x=0 , y=00)
output_field.insert(END,"Hier Ausgabe")
ok_button=Button(window,text="Datei einlesen",command=einlesen)
ok_button.place(x=0, y=50)
Nächster_Datensatz=Button(window,text="hier draufdrücken um Wert A1 in der Excel auszugeben nochmal drauf dann A2 usw.")
Nächster_Datensatz.place(x=0, y=100)
input_field.pack()
ok_button.pack()
Nächster_Datensatz.pack()
output_field.pack()
window.mainloop()
Wie könnte es jetzt weiter gehen??
Mein Problem ist es immer noch bei einer Aktion (z.B. drücken von p) der ersten Wert einer Liste auzugeben, dann wieder drücken von p zweiter wert etc.
*-Importe benutzt man nicht, globale Variablen genausowenig.
Du benutzt place, grid und pack gleichzeitig, auf den selben Widgets. Das ist alles mehr Hoffen und Raten, als Programmieren.
Jetzt ist aber `df` nur eine lokale Variable, und Du hast auch keine Möglichkeit, zu zählen, wie oft Dein Button schon gedrückt worden ist.
Das geht nur, in dem Du eine Klasse definierst.
Wie man das macht, solltest Du als erstes lernen, bevor Du hier mit Deinem eigentlichen Problem weiter machen kannst.
Du benutzt place, grid und pack gleichzeitig, auf den selben Widgets. Das ist alles mehr Hoffen und Raten, als Programmieren.
Code: Alles auswählen
from functools import partial
import pandas as pd
import tkinter as tk
def einlesen(input_field):
df = pd.read_excel(input_field.get())
print(df)
def main():
window = tk.Tk()
window.title("Excel Listen Ausgabe")
window.geometry("450x300")
input_field = tk.Entry(window)
input_field.pack()
output_field = tk.Text(window)
output_field.insert(tk.END, "Hier Ausgabe")
output_field.pack()
tk.Button(window, text="Datei einlesen", command=partial(einlesen, input_field)).pack()
tk.Button(window, text="hier draufdrücken um Wert A1 in der Excel "
"auszugeben nochmal drauf dann A2 usw.").pack()
window.mainloop()
if __name__ == "__main__":
main()
Das geht nur, in dem Du eine Klasse definierst.
Wie man das macht, solltest Du als erstes lernen, bevor Du hier mit Deinem eigentlichen Problem weiter machen kannst.
-
- User
- Beiträge: 4
- Registriert: Dienstag 6. April 2021, 20:57
OK hab das mit den Klassen jetzt etwas genauer angeschaut. Komm leider aber dennoch nicht weiter wie ich diese in dieser Anwendung verwenden könnte. Gib mir doch bitte noch einen Tipp
Danke für deine bisherigen Bemühungen
Danke für deine bisherigen Bemühungen
Hallo,
einen weiteren Tipp kann man dir geben, wenn du deine Klasse mal zeigst. Jetzt weis gerade keine wo dein Problem liegt und wie man weiterhelfen kann.
Grüße
Dennis
einen weiteren Tipp kann man dir geben, wenn du deine Klasse mal zeigst. Jetzt weis gerade keine wo dein Problem liegt und wie man weiterhelfen kann.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]