[Anfängerfrage] Import btn vs from tkinter import *
Verfasst: Sonntag 19. Februar 2023, 22:32
Hallo liebe community,
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
Das funktioniert auch soweit. Nun erstelle ich eine btn.py und will den Teil (class Btn:) "auslagern"...
Was nun passiert verstele ich nicht...
Meine main.py
Meine btn.py sieht so aus
Nun meine Fragen.
Ich verstehe einfach nicht, was der Unterschied ist zwischen:
versuche ich...
wird mir "from tkinter import * "ausgegraut" und ich bekomme Fehlermeldungen.
einzig so funktioniert es
Zweitens funktioniert das ganze nur solage bis ich auf den Button drücke. Dann bekomme ich Fehlemeldungen:
Ich danke euch vorab, für eure Zeit und Mühe.
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.