Die Frage ist sicher sehr trivial, und wurde sicher so ähnlich schon mal gestelt, aber wenn ich nach import suche, bekomme ich ein paar 10k Ergebnisse...
Ich versuche mich erst seit ein paar Tagen an Python. Habe sonst so gut wie keine Programiererfahrung. Daher bitte ich um Nachsicht.

Ich spiele etwas mit tkinter rum und möchte mir eine GUI bauen. Dazu habe ich mir eine Klasse Button gebaut und diese Btn genannt. Mein File heist main.py
Code: Alles auswählen
from tkinter import *
mainframe = Tk()
mainframe.title('Test Fenstername')
scx=mainframe.winfo_screenwidth()/2
scy=mainframe.winfo_screenheight()/2
mainframe.configure(bg="black")
mainframe.geometry("+%d+%d" % (scx, scy))
class Btn:
def __init__(self, master):
myFrame=Frame(master)
myFrame.pack()
self.myButton=Button(master, text="Button1", command=self.aktion1)
self.myButton.pack(pady=20)
def aktion1(self):
mainframe.destroy()
btn1 = Btn(mainframe)
mainframe.mainloop()
Was nun passiert verstele ich nicht...
Meine main.py
Code: Alles auswählen
from tkinter import *
import btn
mainframe = Tk()
mainframe.title('Test Fenstername')
scx=mainframe.winfo_screenwidth()/2
scy=mainframe.winfo_screenheight()/2
mainframe.configure(bg="black")
mainframe.geometry("+%d+%d" % (scx, scy))
btn1 = btn.Btn(mainframe)
mainframe.mainloop()
Code: Alles auswählen
from tkinter import *
class Btn:
def __init__(self, master):
myFrame=Frame(master)
myFrame.pack()
self.myButton=Button(master, text="Button1", command=self.aktion1)
self.myButton.pack(pady=20)
def aktion1(self):
mainframe.destroy()
def main():
def aktion():
mainframe.destroy()
print('bitte main.py aufrufen um Programm zu starten')
mainframe = Tk()
scx=mainframe.winfo_screenwidth()/2
scy=mainframe.winfo_screenheight()/2
mainframe.title('wrong file called')
mainframe.configure(bg="black")
mainframe.geometry("+%d+%d" % (scx, scy))
lbl = Label(mainframe, text='please start main.py to run the program', bg="black", fg="gray", font=("Arial", 20))
lbl.pack(padx=30, pady=20)
btn = Button(mainframe, text="CLOSE", bg="black", fg="gray", font=("Arial", 20), command=aktion)
btn.pack(pady=30)
mainframe.mainloop()
if __name__ == '__main__':
main()
Ich verstehe einfach nicht, was der Unterschied ist zwischen:
Code: Alles auswählen
from fibo import fib
from fibo import *
und
import fibo
Code: Alles auswählen
from tkinter import *
from btn import *
einzig so funktioniert es
Code: Alles auswählen
from tkinter import *
import btn
Code: Alles auswählen
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\python3\Lib\tkinter\__init__.py", line 1948, in __call__
return self.func(*args)
^^^^^^^^^^^^^^^^
File "C:\Users\drace\PycharmProjects\00_IMS\btn.py", line 15, in aktion1
mainframe.destroy()
^^^^^^^^^
NameError: name 'mainframe' is not defined
Ich danke euch vorab, für eure Zeit und Mühe.