ich bin neu auf diesem Forum und habe eine Frage die mich seit Tagen beschäftigt.
Ich habe zu Übungszwecken zwei Windows (Fenster), erstellt, das zweite Windows wird als Modul "textbetrachter" von 1. Windows (MainWindow) aufgerufen.
Soweit alles gut, das zweite Window wird über eine Tastenkombination "self.bind("<Control-s>",self.win2)" aufgerufen und das funktioniert auch wie gesagt.
Mein Problem ist, dass vor dem Aufruf folgende Variable erstellte "self.liste = frame_01.config()" und diese Variable (Werte) an das 2. Window übergeben möchte um damit dort weiterarbeiten zu können. Genau an der Stelle mache ich eben einen Programmierfehler.
Die Fehlermeldung lautet:
print(self.win.liste)
AttributeError: 'Toplevel' object has no attribute 'liste'
Hier mal das von mir gebastelte Programm:
Code: Alles auswählen
import tkinter as tk
from tkinter import ttk
import textbetrachter
class MainWindow(tk.Tk):
def __init__(self):
super(MainWindow, self).__init__()
self.title("Lektion: Frame-Widget")
frame_01 = tk.Frame(self, bg="red", width=600, height=200)
frame_01.grid(column=0, row=0, padx=5, pady=5, sticky="w")
frame_01a = tk.LabelFrame(frame_01, text="Rahmen 1:", bg="gray", width=330, height=190)
frame_01a.grid(column=0, row=0, padx=5, pady=5)
frame_01b = tk.LabelFrame(frame_01, text="Rahmen 2:", bg="lightgray", width=330, height=190)
frame_01b.grid(column=2, row=0, padx=(0,5), pady=5)
self.liste = frame_01.config()
self.bind("<Control-s>",self.win2)
def win2(self, event):
self.mein_textbetrachter = textbetrachter.Textbetrachter()
#self.mein_textbetrachter.win.liste
self.mein_textbetrachter.win.mainloop()
root = MainWindow()
root.mainloop()
Code: Alles auswählen
import tkinter as tk
from tkinter import ttk
class Textbetrachter():
def __init__(self):
self.win = tk.Toplevel()
self.win.title("Textbetrachter")
self.win.resizable(False, False)
frame_02 = tk.Frame(self.win, bg="green")
frame_02.grid(column=0, row=0, padx=5, pady=5)
texteditor = tk.Text(frame_02, bg="lightyellow", height=20)
texteditor.grid(column=0, row=0, padx=5, pady=5)
text_scroller = tk.Scrollbar(frame_02, orient="vertical", command=texteditor.yview)
text_scroller.grid(column=1, row=0, sticky="ns")
print(self.win.liste)
for item in self.win.liste.config():
texteditor.insert(tk.INSERT, (item, ":", self.win.liste[item], "\n"))
Liebe Grüße
sc19