Seite 1 von 1
Komischer Tkinter error
Verfasst: Donnerstag 15. Dezember 2022, 18:00
von Merkator
Please help me!
Exception has occurred: TypeError
__init__() missing 1 required positional argument: 'master'
File "/home/asdwa/Python/Ki/BilderKi/StableDiffusionApp-main/app.py", line 17, in <module>
prompt = ctk.CTkEntry(height=40, width=512, text_font=("Arial", 20), text_color="black", fg_color="white")
Re: Komischer Tkinter error
Verfasst: Donnerstag 15. Dezember 2022, 18:02
von __deets__
Joa. Die Fehlermeldung ist da doch sehr eindeutig. Dir fehlt das Argument master. Das wird doch in
https://github.com/TomSchimansky/Custom ... i/CTkEntry auch beschrieben.
Re: Komischer Tkinter error
Verfasst: Donnerstag 15. Dezember 2022, 18:04
von Merkator
So klappts aber auch nicht
Exception has occurred: TypeError
__init__() missing 1 required positional argument: 'master'
File "/home/peerpri07/Python/Ki/BilderKi/StableDiffusionApp-main/app.py", line 17, in <module>
prompt = ctk.CTkEntry(height=40, width=512, text_font=("Arial", 20), text_color="black", fg_color="white")x632")
app.title("Stable Bud")
ctk.set_appearance_mode("dark")
prompt = ctk.CTkEntry(master=root_tk, height=40, width=512, text_font=("Arial", 20), text_color="black", fg_color="white")
prompt.place(x=10, y=10)
lmain = ctk.CTkLabel(height=512, width=512)
lmain.place(x=10, y=110)
modelid = "CompVis/stable-diffusion-v1-4"
device = "cuda"
pipe = StableDiffusionPipeline.from_pretrained(modelid, revision="fp16", torch_dtype=torch.float16, use_auth_token=auth_token)
pipe.to(device)
def generate():
with autocast(device):
image = pipe(prompt.get(), guidance_scale=8.5)["sample"][0]
image.save('generatedimage.png')
img = ImageTk.PhotoImage(image)
lmain.configure(image=img)
trigger = ctk.CTkButton(height=40, width=120, text_font=("Arial", 20), text_color="white", fg_color="blue", command=generate)
trigger.configure(text="Generate")
trigger.place(x=206, y=60)
app.mainloop()Exception has occurred: TypeError
__init__() missing 1 required positional argument: 'master'
File "/home/peerpri07/Python/Ki/BilderKi/StableDiffusionApp-main/app.py", line 17, in <module>
prompt = ctk.CTkEntry(height=40, width=512, text_font=("Arial", 20), text_color="black", fg_color="white")x632")
app.title("Stable Bud")
ctk.set_appearance_mode("dark")
prompt = ctk.CTkEntry(height=40, width=512, text_font=("Arial", 20), text_color="black", fg_color="white")
prompt.place(x=10, y=10)
lmain = ctk.CTkLabel(height=512, width=512)
lmain.place(x=10, y=110)
modelid = "CompVis/stable-diffusion-v1-4"
device = "cuda"
pipe = StableDiffusionPipeline.from_pretrained(modelid, revision="fp16", torch_dtype=torch.float16, use_auth_token=auth_token)
pipe.to(device)
def generate():
with autocast(device):
image = pipe(prompt.get(), guidance_scale=8.5)["sample"][0]
image.save('generatedimage.png')
img = ImageTk.PhotoImage(image)
lmain.configure(image=img)
trigger = ctk.CTkButton(height=40, width=120, text_font=("Arial", 20), text_color="white", fg_color="blue", command=generate)
trigger.configure(text="Generate")
trigger.place(x=206, y=60)
app.mainloop()
Re: Komischer Tkinter error
Verfasst: Donnerstag 15. Dezember 2022, 18:15
von sparrow
Bitte setze doch sowohl Code als auch Fehlermeldungen in Code-Tags. Dann werden sie nicht zu einer Wall of Text und die Einrückungen bleiben erhalten.
Die Fehlermeldung sagt noch immer, dass "master" als Argument fehlt.
Re: Komischer Tkinter error
Verfasst: Donnerstag 15. Dezember 2022, 18:17
von Merkator
und wie behebe ich das?
Re: Komischer Tkinter error
Verfasst: Donnerstag 15. Dezember 2022, 18:32
von sparrow
In den Fehlermeldungen fehöt das master-Argument bei der bemängelten Zeile.
Vielleicht steht sie im Quelltext drin. Ich bin mir nicht sicher, was du da gepostet hast - aber in dem was du ausführst, und was den Fehler wirft, steht dort das entsprechende Argument nicht.
Re: Komischer Tkinter error
Verfasst: Donnerstag 15. Dezember 2022, 18:51
von Merkator
sparrow hat geschrieben: Donnerstag 15. Dezember 2022, 18:32
In den Fehlermeldungen fehöt das master-Argument bei der bemängelten Zeile.
Vielleicht steht sie im Quelltext drin. Ich bin mir nicht sicher, was du da gepostet hast - aber in dem was du ausführst, und was den Fehler wirft, steht dort das entsprechende Argument nicht.
Code: Alles auswählen
import tkinter as tk
import customtkinter as ctk
from PIL import ImageTk
from authtoken import auth_token
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline
# Create the app
app = tk.Tk()
app.geometry("532x632")
app.title("Stable Bud")
ctk.set_appearance_mode("dark")
prompt = ctk.CTkEntry(master=root_tk, height=40, width=512, text_font=("Arial", 20), text_color="black", fg_color="white")
prompt.place(x=10, y=10)
lmain = ctk.CTkLabel(height=512, width=512)
lmain.place(x=10, y=110)
modelid = "CompVis/stable-diffusion-v1-4"
device = "cuda"
pipe = StableDiffusionPipeline.from_pretrained(modelid, revision="fp16", torch_dtype=torch.float16, use_auth_token=auth_token)
pipe.to(device)
def generate():
with autocast(device):
image = pipe(prompt.get(), guidance_scale=8.5)["sample"][0]
image.save('generatedimage.png')
img = ImageTk.PhotoImage(image)
lmain.configure(image=img)
trigger = ctk.CTkButton(height=40, width=120, text_font=("Arial", 20), text_color="white", fg_color="blue", command=generate)
trigger.configure(text="Generate")
trigger.place(x=206, y=60)
app.mainloop()
Exception has occurred: NameError
name 'root_tk' is not defined
File "/home/peerpri07/Python/Ki/BilderKi/StableDiffusionApp-main/app.py", line 18, in <module>
prompt = ctk.CTkEntry(master=root_tk, height=40, width=512, text_font=("Arial", 20), text_color="black", fg_color="white")
Wie behebe ich das jetzt?=
Re: Komischer Tkinter error
Verfasst: Donnerstag 15. Dezember 2022, 18:58
von sparrow
Jetzt hast du zwar das master-Argument drin - aber du übegibst da etwas, das gar nicht existiert.
Wie die Fehlermeldung sagt: Du hast nichts an den Namen root_tk gebunden.
Die Dokumentation, die __deets__ freundlicherweise für dich verlinkt hat, gibt Auskunft darüber, was master sein muss. Ich zitiere: "root, tkinter.Frame or CTkFrame"
Re: Komischer Tkinter error
Verfasst: Freitag 16. Dezember 2022, 07:53
von Merkator
Das hab ich mir angeschaut check ich nicht
Re: Komischer Tkinter error
Verfasst: Freitag 16. Dezember 2022, 08:55
von Sirius3
Was "checkst" Du da nicht? Variablen, die man benutzen will, muß man auch definieren.
Mich wundert etwas, wie man 40 Zeilen Code schreiben kann, der aber schon beim Erstellen des ersten Entry-Elements abbricht. So kann programmieren nicht funktionieren. Programme entwickelt man Stück für Stück und macht erst weiter, wenn der Teil, den man bisher gemacht hat auch wirklich funktioniert. Erster Schritt sollte also sein, überhaupt erst einmal ein Fenster mit EINEM Entry zustande zu bringen; das ganze Firlefanz mit Farben und Schriften und Größen und der ganze Rest gehört erstmal weg.
Also fang mit
Code: Alles auswählen
import tkinter as tk
import customtkinter as ctk
def main():
app = tk.Tk()
prompt = ctk.CTkEntry(master=root_tk)
prompt.pack()
app.mainloop()
if __name__ == "__main__":
main()
an, das ist das minimale Programm, an dem Du scheiterst.
Hier habe ich schon den Code in Funktionen gepackt und statt absoluten Größenangaben `pack` benutzt, wie ein ordentliches GUI-Programm aufgebaut sein sollte. Mit so einem Startpunkt hast Du dann später auch weniger Schwierigkeiten (z.B. dass Du versehentlich globale Variablen benutzt, anstatt sie als Parameter an Deine Callbacks zu übergeben).
Re: Komischer Tkinter error
Verfasst: Freitag 16. Dezember 2022, 09:13
von __deets__
GUI-Objekte bilden eine Hierarchie. Ein Toplevel Fenster beinhaltet zB Frames, und die beinhalten Buttons oder andere Elemente. Du baust diese Hierarchie nicht auf. Deine Objekte hängen in der Luft. Schau dir die Doku und Beispiele an, und vergleich das mit deinem Code.