ich bin Anfänger in Python und habe 2 Probleme mit meinem Programm:
1. Wenn ich mehrfach auf den Button "zeige Fenster" drücke entstehen logischerweise mehrere "fenster1". Das möchte ich aber nicht haben. Es soll trotz mehrfachen Aufrufs nur eine Instanz entstehen, die dann mit dem Button "lösche Fenster" mit einem Klick geschlossen wird.
2. Ich möchte in einer anderen Funktion außerhalb von "fenster()" Signale abfragen und dann je nach Signal z.B. die Funktionen up() und down() ansteuern, um so an unterschiedliche Wert in der Listbox heranzukommen. Aber durch Funktionen außerhalb von "fenster()" kann ich ja nicht auf die inneren Funktionen (up(), down()) zugreifen. Ich habe nicht den geringsten Ansatz, wonach ich in Google suchen soll, um das Problem zu lösen.
Danke und Gruß
EtR
Code: Alles auswählen
import tkinter as tk
def fenster():
def down():
global aktive
fenster1.see(aktive+1)
aktive = (fenster1.curselection()[0])+1
if aktive > (fenster1.size()-3): aktive = (fenster1.size()-3) # die letzten beiden Zeilen werden ausgeblendet
fenster1.select_set(aktive)
fenster1.select_clear(aktive-1)
def up():
global aktive
fenster1.see(aktive-2)
aktive = (fenster1.curselection()[0])-1
if aktive < 1 : aktive = 1
fenster1.select_set(aktive)
fenster1.select_clear(aktive+1)
def ende():
b_up.destroy()
b_down.destroy()
fenster1.destroy()
b_ende.destroy()
b_ende = tk.Button(root, text='lösche Fenster', width=80, command=ende)
b_ende.place(x = 95, y = 5, width=80, height=20)
b_up = tk.Button(root, text='up', width=80, command=up)
b_up.place(x = 195, y = 5, width=80, height=20)
b_down = tk.Button(root, text='down', width=80, command=down)
b_down.place(x = 295, y = 5, width=80, height=20)
fenster1 = tk.Listbox(root,selectmode='browse',height=15, width=100)
fenster1.config(bg='lightgreen', font=('times', 10, 'italic'))
fenster1.place(x = 30, y = 40, width=80, height=200)
for i in range(0,10):
fenster1.insert('end',str(i))
fenster1.select_set(aktive)
fenster1.see(aktive-2)
root = tk.Tk()
root.title("Test")
root.geometry("800x600")
root["bg"] = "Black"
aktive = 4
button1 = tk.Button(root, text='zeige Fenster', width=80, command=fenster)
button1.place(x = 5, y = 5, width=80, height=20)
root.mainloop()