Tkinter – die meistgelesenen Beiträge

Wieso zeigt Python das Bild nicht richtig an?

Hallo,

ich bin mal wieder auf ein Problem gestoßen, dass ich mit Google wohl einfach nicht lösen kann...
Folgendes sind die von mir importierten Module:

from tkinter import *
from tkinter.filedialog import askopenfilename
from threading import Thread
from PIL import Image, ImageTk
import cv2
import threading
import os
import time
import pickle

Und ein Ausschnitt des Codes meines Video Editors:

global Medien_Importierungen, Maximale_Breite, Maximale_Höhe
Videopfad = askopenfilename(filetypes =[('Video Files', '*.mp4')])
Geladenes_Video = cv2.VideoCapture(Videopfad)
Rückgabe, Einzelbild = Geladenes_Video.read()
if Einzelbild.shape[0] / Maximale_Höhe > Einzelbild.shape[1] / Maximale_Breite:
    height = Maximale_Höhe
    width = int(Einzelbild.shape[1] * height / Einzelbild.shape[0])
else:
    width = Maximale_Breite
    height = int(Einzelbild.shape[0] * width / Einzelbild.shape[1])
Einzelbild = cv2.resize(Einzelbild, (width, height))
Tkinter_Bild = ImageTk.PhotoImage(image=Image.fromarray(cv2.cvtColor(Einzelbild, cv2.COLOR_BGR2RGB)))
Thumbnail = Label(Medien, image = Tkinter_Bild)
if Medien_Importierungen % 2 == 0:
    Thumbnail.place(x = Fenster.winfo_screenwidth() * 0.01, y = Fenster.winfo_screenheight() / 10 + (Fenster.winfo_screenwidth() * 0.01 + Maximale_Höhe) * (int(Medien_Importierungen / 2)))
else:
    Thumbnail.place(x = Fenster.winfo_screenwidth() * 0.11, y = Fenster.winfo_screenheight() / 10 + (Fenster.winfo_screenwidth() * 0.01 + Maximale_Höhe) * (int(Medien_Importierungen / 2)))
Medien_Importierungen += 1   

Statt einem Bild wird jetzt nur ein weißes Bild angezeigt. Durch das verdoppeln der Zeile, in der ich die Funktion

Geladenes_Video.read()

angewendet habe, wurde auch nichts gelöst...

Bitte helft mir...

Alex

programmieren, Code, Programmiersprache, Python, Python 3, Tkinter

Python Tkinter Punkte auf Kreis erstellen?

https://images.gutefrage.net/media/fragen/bilder/python-tkinter-punkte-auf-kreis-erstellen/0_big.jpg?v=1515952309796"/>

Ich möchte gerne Punkte auf einem Kreis erzeugen, die in immer gleichen Abständen zueinander sind und die Menge der Punkten vareabel ist. Ich nutze dafür Python und Tkinter:

Mein code dazu ist folgender:

from tkinter import *

import math

win=Tk()

win.title("Kreis")

win.geometry("1500x850")

win.configure(background="white")

leinwand = Canvas(win, width=1500, height=850, bg="white")

leinwand.place(x=100, y=100)

r1=100

p=8

wgrd= 360/float(p)

leinwand.create_oval(700-float(r1), 150-float(r1), 700+float(r1), 150+float(r1), fill="white", width=1, outline="black")

for i in range (0,int(p)):

   xp= (float(r1) * math.cos(wgrd*i))+700

   yp= (float(r1) * math.sin(wgrd*i))+150

   leinwand.create_oval(int(xp)-10, int(yp)-10, int(xp)+10, int(yp)+10, fill="red", width=1, outline="red")

Leider haben die roten Punkte bei mir nicht den gleichen Abstand und ich weiß nicht warum. Ich hoffe jmd. kann mir helfen :)

Danke im Voraus! :)

Bild zum Beitrag
Computer, Mathematik, programmieren, Geometrie, Python, GUI, Tkinter

Tkinter Button funktioniert nicht und Canvas Delete funktioniert nicht Bitte Hilfe?

Sehr geehrte Python und Tkinter Fans,

ich habe 2 Probleme. Und zwar ich möchte das wenn ein Knopf gedrückt wird 2 weitere Knöpfe am display erscheinen die man drücken kann. Ein Knopf z.B. "Ja" und der andere Knopf "Nein". Aber sie funktionieren nicht. Und wie kann ich es machen falls auf Nein gedrückt wird, dass dann die Buttons wieder verschwinden?

Mein Code:

def yes_option():
    root.destroy()


def close_root(event):
    assistant_lady_canvas =canvas.create_image(400, 540, image=assistant_lady, anchor=tk.NW)
    assistant_text = canvas.create_text(1400, 500, text="Möchten sie, das Spiel beenden?", fill="black", font=("Courier", 20, "bold"))
    canvas.create_image(0, 0, image="", anchor=tk.NW)
    #root.destroy()

    def close_root_destroy():
        canvas.delete(assistant_lady_canvas)
        canvas.delete(assistant_text)
        canvas.update()
        root.destroy()

    yes_button = canvas.create_image(1280, 600, image=yes)
    canvas.tag_bind(yes_button, "<Button-1>", yes_option)

    no_button = canvas.create_image(1520, 600, image=no)
    canvas.tag_bind(no_button, "<Button-1>", close_root_destroy)

Error:

Exception in Tkinter callback

Traceback (most recent call last):

 File "C:\Users\nicol\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__

  return self.func(*args)

TypeError: yes_option() takes 0 positional arguments but 1 was given

Vielen Dank im Vorraus!

Computer, programmieren, canvas, Python, game-development, Tkinter

Customtkinter?

Ist es normal dass das erstellen von Labels, Textfelder oder Buttons in Klassen als Vorlage super viel Schreibarbeit ist oder geht das auch eleganter und sauberer?

main:

maclass Main(ctk.CTk):
    def __init__(self):
        super().__init__()
        self.main_window()
        self.chatbot_output = InputBox(self, 1, 1, 10, 10, "s", 500, 500, "#202222", "red", "white", "Gib einen Text ein...")
        self.chatbot_output.grid(row=1, column=1, pady=10, padx=10, sticky="s")
        self.chatbot_input = InputBox(self, 2, 1, 0, 10, "n", 500, 50, "#202222", "red", "white", "Gib einen Text ein...")
        self.chatbot_input.grid(row=2, column=1, pady=0, padx=10, sticky="n")
        self.placeholder = Label(self, 0, 1, 0, 10, "n", 500, 320, "transparent", "transparent", "white", ".")
        self.placeholder.grid(row=0, column=1, pady=0, padx=10, sticky="n")
    def main_window(self):
        height = 920
        width = 1680
        x = (self.winfo_screenwidth()//2)-(width//2)
        y = (self.winfo_screenheight()//2) - (height//2)
        self.geometry(f"{width}x{height}+{x}+{y}")
        self.title("YourTerminal")
        self.grid_columnconfigure(0, weight=0)
        self.grid_rowconfigure(0, weight=0)



if __name__ == "__main__":
    main = Main()
    main.mainloop()
    sys.exit()

Vorlage in einer Klasse und in einer anderen Datei:

class InputBox(ctk.CTkFrame):
    def __init__(self, master, row, column, pady, padx, sticky, width, height, entry_fg_color,frame_fg_color, textcolor, placeholder, *args, **kwargs):
        super().__init__(master, fg_color=frame_fg_color, *args, **kwargs)
        self.set_setup(row, column, pady, padx, sticky, width, height, entry_fg_color, textcolor, placeholder)

    def set_setup(self, row, column, pady, padx, sticky, width, height, entry_fg_color, textcolor, placeholder):
        self.input = ctk.CTkEntry(self,
                                  width=width,
                                  height=height,
                                  fg_color=entry_fg_color,
                                  text_color=textcolor,
                                  placeholder_text=placeholder,
                                  )
        self.input.grid(row=row, column=column, pady=pady, padx=padx, sticky=sticky)
Code, Programmiersprache, Python, Python 3, Tkinter, Pycharm

Tkinter: Scrollbar erstellen?

Hey Leute!

Ich habe nochmal eine Frage.

Ich wollte für mein erstes GUI-Projekt in Python eine Scrollbar hinzufügen. Ich habe allerdings keine Ahnung, wie ich dass angehen soll.

Es wäre nett, wenn mir das jemand mithilfe meines Codes erklären könnte. 😄

PS.: Ja, ich weiß, dass der Code ziemlich chaotisch und optimierungsfähig mit OOP ist. 😄

from tkinter import *
from functools import partial
import time

quests = [
  'first_quest',
  'second_quest',
  'third_quest',
  'fourth_quest'] fenster = Tk() fenster.title('MiniQuiz')
fenster.geometry('800x800')

def welcome(sentence, quest1, quest2, quest3, quest4, result1, result2, result3, result4):
  question = Label(text=sentence)
  question.config(width=1000)
  question.pack()
  a_button = Button(text=quest1, command=result1)
  a_button.pack()
  b_button = Button(text=quest2, command=result2)
  b_button.pack()
  c_button = Button(text=quest3, command=result3)
  c_button.pack()
  d_button = Button(text=quest4, command=result4)
  d_button.pack()

def counter(punkte):
  punktestand = Label(text='Punktestand:')
  counter = Label(fenster, text= punkte)
  punktestand.pack(anchor=NW)
  counter.pack(anchor=NW)

def right():
  output = Label(text='Richtig!')
  output.pack()

  for item in quests:
    if 'first_quest' == quests[0]:
      quests.remove('first_quest')
      second_quest()
    elif 'third_quest' == quests[0]:
      quests.remove('third_quest')
      fourth_quest()

def right2():
  output = Label(text='Richtig!')
  output.pack()

  for item in quests:
    if 'second_quest' == quests[0]:
      quests.remove('second_quest')
      third_quest()

def final():
  output = Label(text= 'Du hast gewonnen! Herzlichen Glückwunsch')
  output.pack()

def wrong():
  output = Label(text='Leider falsch! Viel Glück beim nächsten mal!')
  output.pack()

def first_quest():
  welcome('BEVOR es losgeht: Du kannst einen Button nur einmal anklicken, machst du es öfters kannst du nicht mehr gewinnen! ' 'Frage 1: Was ist das größte Bundesland Deutschlands?', 'Bayern', 'Niedersachsen', 'Nordrhein Westfahlen', 'Schleswig-Holstein', right, wrong, wrong, wrong)

def second_quest():
  counter(1)
  welcome('Frage 2: Welches Atom ist am einfachsten Aufgebaut?', 'Sauerstoff', 'Wasserstoff', 'Helium', 'Atome unterscheiden sich nicht vom Aufbau', wrong, right2, wrong, wrong)

def third_quest():
  counter(2)
  welcome('Frage 3: Welches Spiel hat 1993 die Videospielszene mit seiner 3D Optik "Revolutioniert" ?', 'Counter Strike Source', 'Half-Life', 'Doom', 'Call Of Duty', wrong, wrong, right, wrong)

def fourth_quest():
  counter(3)
  welcome('Frage 4: Wie hieß das erste Lebewesen, welches von Menschen in die Umlaufbahn der Erde befördert wurde?', 'Bruno', 'Neil Armstrong', 'Michael Collins', 'Laika', wrong, wrong, wrong, final)

def winner():
  counter(4)
  output = Label(fenser, text='Du hast gewonnen!')
  output.pack()

first_quest()
fenster.mainloop()
Computer, Internet, programmieren, Python, Scrollbar, Tkinter

AttributeError: 'PhotoImage' object has no attribute 'shape'?

Ich bin derzeit dabei mit tkinter, opencv und mit Media Pipe Framework zu arbeiten. Dabei möchte ich Bilder Hochladen können und die hochgeladenen Bilder soll mithilfe von Mediapipe die Hand Landmarks erfassen. Mit Hand Landmarks meine ich alle 21 Positionen eines Hand zu erkennen (Hier findet ihr mehr Infos dazu: https://google.github.io/mediapipe/solutions/hands.html ). Leider bekomme ich mit meiner erstellten Implementierung folgende Fehlermeldung:

INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/bj/projects/pro1/pictureMp.py", line 31, in imageLandmarks
    height, width, _ = image.shape
AttributeError: 'PhotoImage' object has no attribute 'shape'

Was kann ich dagegen machen? Hier ist mein aktueller Code:

def imageLandmarks():
    global panelA
    with mpHands.Hands(static_image_mode=True, max_num_hands=2, min_detection_confidence=0.5) as hands:
        select_image.path = filedialog.askopenfilename()
        filename = os.path.basename(select_image.path)

        if len(select_image.path) > 0:
            image = cv2.imread(select_image.path)
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
            image = Image.fromarray(image)
            image = ImageTk.PhotoImage(image)

            height, width, _ = image.shape
            results = hands.process(image)

            num_cords = 21
            landmarks = ['class']
            for val in range(1, num_cords + 1):
                landmarks += ['x{}'.format(val), 'y{}'.format(val), 'z{}'.format(val)]

                if results.multi_hand_landmarks:
                    for num, hand in enumerate(results.multi_hand_landmarks):
                        mpDraw.draw_landmarks(image, hand, mpHands.HAND_CONNECTIONS)
programmieren, Python, opencv, Tkinter

Tkinter Fehler?

Ich programmiere mit Tkinter einen Taschenrechner zusammen mit einem Video.

Es kommt die ganze zeit die Fehlermeldung "nontype has no attribute get".

Mein code:

import tkinter as tk

calculator = ()

root = tk.Tk()
root.geometry("75x100")
root.title("Taschenrechner")
root.resizable(True, True)

entry_ziv = tk.Entry(root).grid(row=0, column=0)

def add_ziv(ziv):
    entry_ziv.insert(0, ziv)

def show_result():
    result = eval(entry_ziv.get())
    entry.delete(0, tk.END)
    entry_ziv.insert(0, str(result))

button_seven = tk.Button(root, text="7", command=lambda: add_ziv("7")).grid(row=1, column=0)
button_eight = tk.Button(root, text="8",command=lambda: add_ziv("8")).grid(row=1, column=1)
button_nine = tk.Button(root, text="9", command=lambda: add_ziv("9")).grid(row=1, column=2)
button_div = tk.Button(root, text=":", command=lambda: add_ziv(":")).grid(row=1, column=3)

button_four = tk.Button(root, text="4", command=lambda: add_ziv("4").grid(row=2, column=0))
button_five = tk.Button(root, text="5", command=lambda: add_ziv("5")).grid(row=2, column=1)
button_six = tk.Button(root, text="6", command=lambda: add_ziv("6")).grid(row=2, column=2)
button_multiply = tk.Button(root, text="x", command=lambda: add_ziv("x")).grid(row=2, column=3)

tton_one = tk.Button(root, text="1", command=lambda: add_ziv("1")).grid(row=3, column=0)
button_two = tk.Button(root, text="2", command=lambda: add_ziv("2")).grid(row=3, column=1)
button_tree = tk.Button(root, text="3", command=lambda: add_ziv("3")).grid(row=3, column=2)
button_minus = tk.Button(root, text="-", command=lambda: add_ziv("-")).grid(row=3, column=3)

button_execute = tk.Button(root, text="=", command=show_result()).grid(row=4, column=2)
button_plus = tk.Button(root, text="+", command=lambda: add_ziv("+")).grid(row=4, column=3)

root.mainloop()
Code, Python, Tkinter

Tkinter hängt sich auf wenn ich den Button drücke?

Hi, ich soll für die Schule in Informatik ein Verschlüsselungsprogramm schreiben. Ich habe hier die Caeser verschlüsselung genommen. Der Code hat ohne Tkinter Super Funktioniert:

def Code():
code = input("Code: ")
Verschiebung = int(input("Verschiebungsfaktor: "))
coded = "".join(chr((ord(char) + Verschiebung) % 256) for char in code)
print("Verschlüsselter Code:", coded)
def Encode():
code = input("Verschlüsselung: ")
x = int(input("Verschiebungsfaktor: "))
Verschiebung = -x
encoded = "".join(chr((ord(char) + Verschiebung) % 256) for char in code) print("Entschlüsselter Code:", encoded)

Hier ist der Code mit Tkinter:

from tkinter import *
def Code():
  code = input(b.get())
  Verschiebung = int(input(d.get()))
  coded = "".join(chr((ord(char) + Verschiebung) % 256) for char in code)
  h.config(text=coded)
def Encode():
  code = input(b.get())
  x = int(input(d.get()))
  Verschiebung = -x
  encoded = "".join(chr((ord(char) + Verschiebung) % 256) for char in code)
  h.config(text=encoded)
F = Tk()
F.title('Coding')
F.geometry('500x500')
F.config(bg='gray')
a = Label(master=F, text='Eingabe:', fg='white', bg='black', font=('Arial',16))
a.place(x=50, y=50, width=200, height=50)
b = Entry(master=F, text='', font=('Arial',16))
b.place(x=275, y=50, width=200, height=50)
c = Label(master=F, text='Schlüssel:', fg='white', bg='black', font=('Arial',16))
c.place(x=50, y=125, width=200, height=50)
d = Entry(master=F, text='', font=('Arial',16))
d.place(x=275, y=125, width=200, height=50)
e = Button(master=F, text='Verschlüsseln', fg='white', bg='black', font=('Arial',16), command=Code)
e.place(x=50, y=200, width=200, height=50)
g = Button(master=F, text='Entschlüsseln', fg='white', bg='black', font=('Arial',16), command=Encode)
g.place(x=275, y=200, width=200, height=50)
h = Label(master=F, text='', font=('Arial',16))
h.place(x=50, y=275, width=425, height=50)
F.mainloop()

Das Problem ist, das sich Tkinter aufhängt und abstürtzt wenn ich einen Button drücke

Computer, Technik, programmieren, Python, Tkinter

TypeError: can only concatenate str (not "function") to str?

ich möchte eine ui für mailtm erstellen aber bekomme kein output raus also wenn email ankommen werden sie nicht angezeigt und wenn ich listener eingebe bekomme ich jedes mal den gleichen fehler code

Fehler code:

TypeError: can only concatenate str (not "function") to str

from mailtm import *


def listener(message):
    print("\nSubject: " + message['subject'] + str(listener))
    print("Content: " + message['text'] if message['text'] else message['html'] + str(listener))


test = Email()
print("\nDomain: " + test.domain)

test.register()
print("\nEmail Adress: " + str(test.address))


test.start(listener, interval=3)
print("\nHab Sabr.....")


main = ctk.CTk()
main.geometry("500x320")
main.title("Temp mail By Amjn")


emaila = ctk.CTkEntry(main, placeholder_text="         " + test.address, width=900, font=("Helvetica", 20))
emaila.configure(state="readonly")
emaila._corner_radius = 10
emaila.pack()


Copyt = ctk.CTkLabel(main, text="Copy Email", font=("Helvetica", 20))
Copyt.pack()


def neuw(self=None):
    neu = ctk.CTkToplevel(main)
    neu.title("Emails              (MADE BY AMJN)")
    neu.geometry("500x320")
    neu.corner_radius = 30
    neu.resizable(width=True, height=True)

    Ausg = ctk.CTkEntry(neuw, placeholder_text=("         ") + listener, width=900, font=("Helvetica", 20))
    Ausg.pack()


knopf = ctk.CTkButton(main, text="Emails", font=("Helvetica", 20), command=neuw)
knopf.pack(pady=20)

main.mainloop()
Code, Programmiersprache, Python, UI, Python 3, Tkinter, Pycharm

Durschnittszeiten mit arrays in python berechnen?

Ich programmiere aktuell einen 1x1 Trainer um Programmieren zu üben/ lernen. Aktuell wird nach eingeben der Aufgabe, die Aufgabe überprüft und Richtig oder Falsch angezeigt. Darunter die benötigte Zeit für die Aufgabe.
Jetzt will ich aber statt der benötigten Zeit pro Aufgabe die Durchschnittszeit pro Aufgabe angezeigt bekommen (Am besten mit Speichern von Daten in Arrays).

Kann mir da jemand helfen?

Hier der aktuelle Code:

from random import randint

import tkinter as tk

import time

status = False

def buttonLos_clicked(event):

    global status

   

    if status == False:

        status = True

        nextTask()

def nextTask():

    global a, b, produkt, zeitanfang

    textbox.delete(0,tk.END)

    zeitanfang = time.time()

   

    a = randint(1,10)

    b = randint(1,10)

    produkt = a * b

    showTask()

def showTask():

    global a, b

   

    labelTask["text"]="Wie viel ist " + str(a) + " x " + str(b) + "?"

def checkAufgabe(event):

    global produkt, zeitanfang, zeitende

   

    antwort = int(textbox.get())

    if antwort == produkt:

        zeitende = time.time()

        labelAnswer["text"] = "Richtig"

        labelTime["text"] = round(zeitende - zeitanfang, 2)

        nextTask()

   

    else:

        labelAnswer["text"] = "Leider falsch. Probiere es nochmal"

        textbox.delete(0,tk.END)

        showTask()

root = tk.Tk()

root.title("1x1-Trainer")

labelBody1 = tk.Label(root, text="Es werden dir zufällige Aufgaben gestellt.")

buttonLos = tk.Button(root, text="Los")

labelTask = tk.Label(root)

textbox = tk.Entry(root)

labelAnswer = tk.Label(root)

labelTime = tk.Label(root)

labelBody1.pack()

buttonLos.pack()

labelTask.pack()

textbox.pack()

labelAnswer.pack()

labelTime.pack()

buttonLos.bind("<Button-1>", buttonLos_clicked)

textbox.bind("<Return>", checkAufgabe)

root.mainloop()

programmieren, Array, Programmiersprache, Python, time, benutzeroberflaeche, Python 3, Tkinter

Python GUI Tkinter Buttons blinken bei laufender Akutalisierung?

Hallo,

ich möchte mit Phyton und der Bibliothek Tkinter eine GUI für ein Kartenspiel programmieren.

Für das Kartenspiel müssen ständig neue Karten geladen werden.

Das heißt, es wird zum Beispiel andauernd überprüft wie viele Karten die Spieler in der Auslage und in der Hand haben und dementsprechend werden dann Labels und Buttons generiert.

Die Idee ist, einfach laufend die GUI in gewissen Abständen (zum Beispiel einige Dutzend Millisekunden) zu aktualisieren.

Wenn ich das mache blinken die Labels und Buttons aber immer auf.

Nach Recherche soll das daran liegen, dass sie immer wieder in zu kurzen Abständen neu erstellt werden.

Man könnte die GUI natürlich immer nur dann neu erstellen lassen, wenn tatsächlich im Spiel etwas passiert.

Das passiert aber andauernd, weswegen es besser ist, einfach laufend die GUI zu aktualisieren.

Gibt es dafür noch eine andere Methode (Zum Beispiel PyGame anwenden)?

Hier ein Minimalbeispiel:

class DynamicInterfaceApp:
  def __init__(self):
    self.root = Tk()
    self.root.geometry("1000x500")
    self.update_interface_periodically()
  
  def update_interface(self):
    self.my_frame= Frame(self.root, bg="red")
    self.my_frame.place(x=0, y=0, relwidth=1, relheight=1) 
    self.my_button = Button(self.my_frame)
    self.my_button.place(x=0, y=0, width=50, height=50)
   
  def update_interface_periodically(self):
    self.update_interface()
    self.root.after(25, self.update_interface_periodically)

app = DynamicInterfaceApp()
app.root.mainloop()
App, Code, Programmiersprache, Python, Pygame, Tkinter

Python Ladebalken funktioniert nicht?

Hi,

Ich habe mit Python einen Ladebalken für ein kleines GUI erstellt. Dieser Ladebalken soll anzeigen wieviele Dateien schon Kopiert wurden. Wenn ich den Ladebalken herausnehme läuft alles. Wenn ich ihn jedoch einfüge kommen fehlermeldungen und die Dateien werden manchmal nicht korrekt Kopiert. Ich komme mitleiweile nicht mehr weiter und hoffe dass mir hier einer helfen kann.

Lg McCrafterIV

Fehlermeldung:

"C:\Users*\PycharmProjects\MakeBackup\venv\Scripts\python.exe" "C:/Users/*/PycharmProjects/MakeBackup/main.py"

Exception in Tkinter callback

ERROR! Cannot create folder.

ERROR! Cannot copy files.

ERROR! Cannot copy files.

ERROR! Cannot copy files.

Traceback (most recent call last):

File "C:\Users****\AppData\Local\Programs\Python\Python36-32\lib\tkinter__init__.py", line 1702, in __call__

return self.func(*args)

File "C:/Users//PycharmProjects/MakeBackup/main.py", line 112, in <lambda>

save_1_button = Button(fenster, text="Save", command=lambda: save.savedata())

File "C:\Users****\PycharmProjects\MakeBackup\save.py", line 40, in savedata

pb = ttk.Progressbar(fenster, orient='horizontal', length=300, mode='determinate', maximum=line, value=saved)

File "C:\Users****\AppData\Local\Programs\Python\Python36-32\lib\tkinter\ttk.py", line 1014, in __init__

Widget.__init__(self, master, "ttk::progressbar", kw)

File "C:\Users****\AppData\Local\Programs\Python\Python36-32\lib\tkinter\ttk.py", line 559, in __init__

tkinter.Widget.__init__(self, master, widgetname, kw=kw)

File "C:\Users****\AppData\Local\Programs\Python\Python36-32\lib\tkinter__init__.py", line 2296, in __init__

(widgetName, self._w) + extra + self._options(cnf))

_tkinter.TclError: expected floating-point number but got "

"

Process finished with exit code 0

Hier mein Quellcode:

https://gist.github.com/McCrafterIV/682f23b2962153beb7b640d304548dac

Error, Python, ladebalken, GUI, Tkinter

Python - tkinter text eingabe in variable?

Hallo,

ich habe folgendes programmiert:

import tkinter as tk
import os


root = tk.Tk()
root.geometry("400x240")


def encrypt(filename):
    to_encrypt = open(filename, "rb").read()
    size = len(to_encrypt)
    key = os.urandom(size)
    with open(filename + ".lqk", "wb") as key_out:
        key_out.write(key)
    encrypted = bytes(a ^ b for (a, b) in zip(to_encrypt, key))
    with open(filename, "wb") as encrypted_out:
        encrypted_out.write(encrypted)  
    filename = textExample.get(1.0, tk.END+"-1c")
    encrypt(filename)




def decrypt(filename, key):
    file = open(filename, "rb").read()
    key = open(key, "rb").read()
    decrypted = bytes(a ^ b for (a, b) in zip(file, key))
    with open(filename, "wb") as decrypted_out:
        decrypted_out.write(decrypted)
    fileTest = filename + ".lqk"
    try:
        os.remove(fileTest)
    except OSError as e:
        print(e)
    else:
        print("Datei erfolgreich gelöscht!")
    filename = textExample.get(1.0, tk.END+"-1c")
    decrypt(filename, filename + ".lqk")
    
    


textExample=tk.Text(root, height=10)
textExample.pack()
btnEncrypt=tk.Button(root, height=1, width=10, text="Encrypt", 
                    command=encrypt)
btnDecrypt=tk.Button(root, height=1, width=10, text="Decrypt", 
                    command=decrypt)


btnEncrypt.pack()
btnDecrypt.pack()


root.mainloop()

Nur leider funktioniert dies nicht. In der Debugging Console bekomme ich folgende Fehlermeldung:

Bei der Encrypt Funktion:

PS C:\Users\elias\Desktop\Python>  c:; cd 'c:\Users\elias\Desktop\Python'; & 'C:\Users\elias\AppData\Local\Programs\Python\Python310\python.exe' 'c:\Users\elias\.vscode\extensions\ms-python.python-2021.12.1559732655\pythonFiles\lib\python\debugpy\launcher' '52518' '--' 'c:\Users\elias\Desktop\Python\main.py'
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\elias\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
TypeError: encrypt() missing 1 required positional argument: 'filename'


Decrypt Funktion:

Traceback (most recent call last):
  File "C:\Users\elias\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
TypeError: decrypt() missing 2 required positional arguments: 'filename' and 'key'      


Wie kann ich das Problem jetzt lösen?

Danke im Vorraus!

VG!

programmieren, Python, Python 3, Tkinter

Wie starte ich die While Schleife in Python neu?

Hallo!

Ich programmiere aktuell einen "Vokabelabfrager". Dazu hätte ich eine Frage. Und zwar arbeite ich grafisch mit Tkinter. Doch ich bin gerade in einer While Schleife, in der alles funktioniert, aber dann will die While Schleife sich nicht mehr neustarten, denn sie hat schon erledigt was sie machen sollte, und will nicht weiter abfragen, weil sie dies schon gemacht hat.

Das ist ein Ausschit meines Codes:

weiter = False


def Prüfungs_Start():
    global weiter
    weiter = True
    while weiter == True:
        weiter = False
        Prüfungs_Start_Fenster = Tk()
        Prüfungs_Start_Fenster.title("Prüfung")
        Prüfungs_Start_Fenster.geometry("400x500")
        #Random Zeile finden
        Datei = open("Vokabeln.txt", "a")
        Datei = open("Vokabeln.txt", "r")
        Datei_Anzahl_Zeilen = 0
        for Zeile in Datei:
            Datei_Anzahl_Zeilen += 1
        Datei.seek(0)
        Randomzeile = randint(1, Datei_Anzahl_Zeilen)
        Zähler = 1
        for Zeilen_Inhalt in Datei:
            if Zähler == Randomzeile:
                Random_Zeilen_Inhalt = Zeilen_Inhalt
            Zähler += 1
        #2 Vokabeln, die in der ausgewählten Zeile stehen, in 2 Variablen speichern
        Ort = Random_Zeilen_Inhalt.find("'")
        TestVokabel1 = Random_Zeilen_Inhalt[0:Ort]
        TestVokabel2 = Random_Zeilen_Inhalt[Ort+1:-1]
        Label(Prüfungs_Start_Fenster, text = f"Ausgangs-Vokabel: {TestVokabel1}", font = "Arial_Black 20").place(x = 10, y = 10)
        Eingegebenes_Ergebnis = Entry(Prüfungs_Start_Fenster)
        Eingegebenes_Ergebnis.place(x = 10, y = 50)
        def Prüfung():
            if Eingegebenes_Ergebnis.get() == TestVokabel2:
                Label(Prüfungs_Start_Fenster, text = "Richtig!         ", font = "Arial 21", fg = "green").place(x = 10, y = 180)
            else:
                Label(Prüfungs_Start_Fenster, text = "Leider falsch", font = "Arial 21", fg = "red").place(x = 10, y = 180)


        Button(Prüfungs_Start_Fenster, text = "Fertig", command = Prüfung).place(x = 10, y = 100)
        def Weiter():
            global weiter
            weiter = True
            Prüfungs_Start_Fenster.destroy()
        Button(Prüfungs_Start_Fenster, text = "Weiter", command = Weiter).place(x = 10, y = 130)

Nun habe ich hinten diesen "Weiter" Button, der die Variable "weiter" wieder auf einen anderen Wert weisen soll, um die While Schleife wieder laufen zu lassen. Das möchte sie aber wohl nicht, denn sie hat ja schon abgefragt und da hat es nicht gestimmt.

Wenn ihr wisst, wie ich es schaffen kann, dass die While Schleife neu abfragt, bitte hilft mir,

euer Alex

programmieren, Programmiersprache, Python, Tkinter

Python Fehler no attribute 'TFE_NewContextOptions'?

Hi, Ich habe einen Fehler beim ausführen von einem Python Script:

C:\Users\DeneX\Desktop\SC_FEGAN\SC-FEGAN-program-files>python demo.py

Traceback (most recent call last):

 File "C:\Users\DeneX\Desktop\SC_FEGAN\SC-FEGAN-program-files\demo.py", line 11, in <module>

   from model import Model

 File "C:\Users\DeneX\Desktop\SC_FEGAN\SC-FEGAN-program-files\model.py", line 1, in <module>

   import tensorflow as tf

 File "C:\Users\DeneX\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\tensorflow\__init__.py", line 24, in <module>

   from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import

   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\DeneX\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\tensorflow\python\__init__.py", line 49, in <module>

   from tensorflow.python import pywrap_tensorflow

 File "C:\Users\DeneX\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>

   from tensorflow.python.pywrap_tensorflow_internal import *

 File "C:\Users\DeneX\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 96, in <module>

   TFE_NewContextOptions = _pywrap_tensorflow_internal.TFE_NewContextOptions

                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

AttributeError: module '_pywrap_tensorflow_internal' has no attribute 'TFE_NewContextOptions'

Wie bekomme ich das behoben; Ich habe tensorflow==1.13.0rc2 installiert damit das Script läuft & Python 3.11.3

Linux, Programmiersprache, Python, Python 3, Pygame, Tkinter, Pycharm, Discord, Discord Bot

stern im tkinter code?

Hallo,

ich soll eine Flagge mit Python und tkinter machen, ich wollte gern die Chile Flagge machen. Die Grundlage habe ich, jetzt fehlt nur noch der Stern. Im Internet hab ich also versucht einen Code zu finden, dieser funktioniert jedoch nicht und folgende Fehlermeldung taucht auf:

 %Run Flagge_Chile.py

Traceback (most recent call last):

 File "F:\WI\01_Python OOP WI\01_Objekte und Klassen\L1_1_Aufgabe_Flagge_HA_Chile.py", line 141, in <module>

  s.zeichnen()

 File "F:\WI\01_Python OOP WI\01_Objekte und Klassen\L1_1_Aufgabe_Flagge_HA_Chile.py", line 83, in zeichnen

  canvas.create_line(self.pos_x0, self.pos_y0, self.pos_x1, self.pos_y1, self.pos_x2, self.pos_y2, self.pos_x3, self.pos_y3, self.pos_x4, self.pos_y4, fill=self.farbe, outline=self.farbe)

 File "F:\S20\Programme\Thonny_3.2.3\lib\tkinter\__init__.py", line 2492, in create_line

  return self._create('line', args, kw)

 File "F:\S20\Programme\Thonny_3.2.3\lib\tkinter\__init__.py", line 2480, in _create

  *(args + self._options(cnf, kw))))

_tkinter.TclError: unknown option "-outline"

Das ist der Programmcode:

import tkinter as tk

class Rechteck:

  # Initialisiert ein Rechteck Objekt mit Standardwerten

  def __init__(self):

    self.breite = 0

    self.hoehe = 0

    self.pos_x = 0

    self.pos_y = 0

    self.farbe = "black"

  def __str__(self):

    return "Dies ist die Klasse 'Rechteck'"

  # Malt auf ein übergebenes "tk.Canvas" Objekt das Rechteck

  def zeichnen(self):

    x_ende = self.pos_x + self.breite

    y_ende = self.pos_y + self.hoehe

    canvas.create_rectangle(self.pos_x, self.pos_y, x_ende, y_ende, fill=self.farbe, outline=self.farbe)

class Kreis:

  def __init__(self):

    self.pos_x = 0

    self.pos_y = 0

    self.radius = 0

    self.farbe = "black"

  def __str__(self):

    return "Dies ist die Klasse 'Kreis'"

  # Malt auf ein übergebenes "tk.Canvas" Objekt den Kreis

  def zeichnen(self):

    # berechne Postion bis wohin gezeichnet werden muss, abhängig vom Radius

    x_beginn = self.pos_x - self.radius

    y_beginn = self.pos_y - self.radius

    x_ende = self.pos_x + self.radius

    y_ende = self.pos_y + self.radius

    canvas.create_oval(x_beginn, y_beginn, x_ende, y_ende, fill=self.farbe, outline=self.farbe)

     

class Stern:

  def __init__(self):

    self.pos_x0 = 0

    self.pos_y0 = 0

    self.pos_x1 = 0

    self.pos_y1 = 0

    self.pos_x2 = 0

    self.pos_y2 = 0

    self.pos_x3 = 0

    self.pos_y3 = 0

    self.pos_x4 = 0

    self.pos_y4 = 0

    self.farbe = "black"

    self.outline = "black"

     

  def __str__(self):

    return "Dies ist die Klasse 'Stern'"

     

  def zeichnen(self):

    canvas.create_line(self.pos_x0, self.pos_y0, self.pos_x1, self.pos_y1, self.pos_x2, self.pos_y2, self.pos_x3, self.pos_y3, self.pos_x4, self.pos_y4, fill=self.farbe, outline=self.farbe)

     

if __name__ == '__main__':

  # GUI Klasse initialisieren

  application = tk.Tk()

  # Hinzufügen einer Zeichenfläche

  canvas = tk.Canvas(application, width=600, height=400)

  canvas.pack()

 

 

  r = Rechteck()

  r.pos_x = 30

  r.pos_y = 30

  r.breite = 200

  r.hoehe = 200

  r.farbe = "blue"

  r.zeichnen()

   

  r.pos_x = 230

  r.pos_y = 30

  r.breite = 390

  r.hoehe = 200

  r.farbe = "white"

  r.zeichnen()

   

  r.pos_x = 30

  r.pos_y = 230

  r.breite = 600

  r.hoehe = 220

  r.farbe = "red"

  r.zeichnen()

   

  s = Stern()

   

  s.pos_x0 = 40

  s.pos_y0 = 70

  s.pos_x1 = 60

  s.pos_y1 = 40

  s.pos_x2 = 80

  s.pos_y2 = 70

  s.pos_x3 = 40

  s.pos_y3 = 50

  s.pos_x4 = 80

  s.pos_y4 = 70

  s.outline = "red"

  s.zeichnen()

 

  # Fokus auf die GUI legen und starten

  tk.mainloop()

Weiß jemand wo der Fehler ist und könnte mir helfen?
Im Voraus schonmal Dankeschön.

programmieren, Code, Informatik, Programmiersprache, Python, Programmcode, Tkinter

Wieso ändert Python das Foto zu einem weißen Hintergrund?

Hallo,

ich bin mal wieder beim Coden meines Video Editors auf einen Fehler gestoßen... Folgendes ist ein Ausschnitt meines Codes:

    global Medien_Importierungen, Maximale_Breite, Maximale_Höhe, Tkinter_Bild
    Videopfad = askopenfilename(filetypes =[('Video Files', '*.mp4')])
    Geladenes_Video = cv2.VideoCapture(Videopfad)
    Rückgabe, Einzelbild = Geladenes_Video.read()
    if Einzelbild.shape[0] / Maximale_Höhe > Einzelbild.shape[1] / Maximale_Breite:
        height = Maximale_Höhe
        width = int(Einzelbild.shape[1] * height / Einzelbild.shape[0])
    else:
        width = Maximale_Breite
        height = int(Einzelbild.shape[0] * width / Einzelbild.shape[1])
    Einzelbild = cv2.resize(Einzelbild, (width, height))
    Tkinter_Bild = ImageTk.PhotoImage(image=Image.fromarray(cv2.cvtColor(Einzelbild, cv2.COLOR_BGR2RGB)))
    Thumbnail = Label(Medien, image = Tkinter_Bild)
    if Medien_Importierungen % 2 == 0:
        Thumbnail.place(x = Fenster.winfo_screenwidth() * 0.01 + Maximale_Breite / 2 - Einzelbild.shape[1] / 2, y = Fenster.winfo_screenheight() / 10 + (Fenster.winfo_screenwidth() * 0.01 + Maximale_Höhe) * int(Medien_Importierungen / 2) + Maximale_Höhe / 2 - Einzelbild.shape[0] / 2)
    else:
        Thumbnail.place(x = Fenster.winfo_screenwidth() * 0.11 + Maximale_Breite / 2 - Einzelbild.shape[1] / 2, y = Fenster.winfo_screenheight() / 10 + (Fenster.winfo_screenwidth() * 0.01 + Maximale_Höhe) * int(Medien_Importierungen / 2) + Maximale_Höhe / 2 - Einzelbild.shape[0] / 2)
    Medien_Importierungen += 1

Hier kann man Medien importieren, um sie am Ende auf die Timeline zu ziehen. Hierbei bin ich aber noch nicht weit wie ihr sieht. Auf jeden Fall wird diese Funktion jedes mal beim Drücken eines Buttons ausgeführt und es sollen dann neben- und untereinander die ersten Frames der verschiedenen Videos angezeigt werden. Wenn ich aber ein zweites Medium importiere, ändert sich das davor erstellte Bild zu einem komplett weißen Bild. Meine Frage wäre, wie ich das behebe...

Freue mich auf Hilfe...

Alex

Programmiersprache, Python, Python 3, Tkinter

Python Tkinter clear geht nicht?

```File "C:\Users\Marek\energyECO\Gewinnspiel\clearEntry.py", line 9, in register_user

   vorname_entry.delete(0, END)

AttributeError: 'NoneType' object has no attribute 'delete'```

Das ist der Error

Und das der Code:

from tkinter import *
import csv

def register_user():
    vorname_info = vorname.get()
    nachname_info = nachname.get()
    email_info = email.get()

    # open the file in the write mode
    with open('Benutzernamen.csv', 'a', newline='', encoding='UTF8') as f:
        # create the csv writer
        writer = csv.writer(f, delimiter =';')
        # write a row to the csv file
        row=[vorname_info, nachname_info, email_info]
        writer.writerow(row)
        # close the file
        f.close()

    #vorname_entry.delete(0, END)
    #nachname_entry.delete(-0, END)

    Label(screen1, text="energyECO")

    vorname_entry.delete(0, 'end')
    nachname_entry.delete(0, 'end')
    email_entry.delete(0, 'end')


def register():

    global screen1
    screen1 = Toplevel(screen)
    screen1.title("Gewinnspiel")
    screen1.geometry("550x500")

    global vorname
    global nachname
    global email

    vorname = StringVar()
    nachname = StringVar()
    email = StringVar()

    global vorname_entry
    global nachname_entry
    global email_entry

    Label(screen1, text="Bitte tragen sie ihren Vor- und Nachnamen und außerdem ihre E-Mail ein", font=('Arial 15')).pack()
    Label(screen1, text=" ").pack()
    Label(screen1, text="Vorname * ", font=('Arial 12')).pack()
    vorname_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=vorname).pack()
    Label(screen1,text=" ").pack()
    Label(screen1, text="Nachname * ", font=('Arial 12')).pack()
    nachnamne_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=nachname).pack()
    Label(screen1,text=" ").pack()
    Label(screen1, text="E-Mail * ", font=('Arial 12')).pack()
    email_entry = Entry(screen1,width=50, font=('Arial 20'), textvariable=email).pack()
    Label(screen1,text=" ").pack()
    Label(screen1,text=" ").pack()
    Label(screen1,text=" ").pack()
    Label(screen1, text="Mit der Teilnahme am Gewinnspiel und der Eingabe meine Daten erkläre ich mich bereit, den E-Mail Newsletter von energyECO monatlich zu erhalten.", font=("Arial 10")).pack()
    Label(screen1,text=" ").pack()
    Button(screen1, text="Daten senden", font=('Arial 20'), width="15", height="2", command=register_user).pack()


def close():
    print("Closed!")
    screen.destroy()
    screen1.destroy()

def main_screen():
    global screen
    screen = Tk()
    screen.geometry("300x250")
    screen.title("energyECO")

    Label(text="energyECO", bg="gray", width="300", height="2", font=("Calibri", 13)).pack()
    Label(text=" ").pack()
    Button(text="Gewinnspiel", height="2", width="30", command=register).pack()
    Label(text=" ").pack()
    Label(text=" ").pack()
    Label(text=" ").pack()
    Button(text="Close", command=close).pack()
    Label(text=" ").pack()

    screen.mainloop()

main_screen()
Python 3, Tkinter

Datei finden Fehler?

Hallo,

ich mache ein Programm in Python (mit Turtle), welches erkennt wo die ISS ist. Aber (obwohl es in demselben Ordner ist) findet es die Datei 'map.gif' nicht. Kann mir da jemand helfen?

Danke im voraus!

Code:

import json
import turtle
import urllib.request


url = 'http://api.open-notify.org/astros.json'
antwort = urllib.request.urlopen(url)
ergebnis = json.loads(antwort.read())


print('Personen im Weltall: ', ergebnis['number'])


personen = ergebnis['people']
#print(personen)



for p in personen:
    print(p['name'], 'in', p['craft'])


url = 'http://api.open-notify.org/iss-now.json'
antwort = urllib.request.urlopen(url)
ergebnis = json.loads(antwort.read())


standort = ergebnis['iss_position']
breitengrad = float(standort['latitude'])
längengrad = float(standort['longitude'])
print('Breitengrad: ', breitengrad)
print('Längengrad: ', längengrad)


bildschirm = turtle.Screen()
bildschirm.bgpic("map.gif")

Fehlermeldung:

File "/home/pi/Dokumente/Python programme/Standart/Wo ist die ISS?", line 29, in <module>
    bildschirm.bgpic("map.gif")
  File "/usr/lib/python3.7/turtle.py", line 1481, in bgpic
    self._bgpics[picname] = self._image(picname)
  File "/usr/lib/python3.7/turtle.py", line 479, in _image
    return TK.PhotoImage(file=filename)
  File "/usr/lib/python3.7/tkinter/__init__.py", line 3545, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/usr/lib/python3.7/tkinter/__init__.py", line 3501, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "map.gif": no such file or directory
Python, Python 3, Tkinter

wie behebe ich diesen fehler?

Hallo!

Kann mir jemand helfen diese Fehler zu beheben?

FEHLER 1 :Traceback (most recent call last):

 File "C:\Users\arrou\OneDrive\Desktop\cheese\für acc\tmmail\main.py", line 37, in <module>

class mailtm_gui(ctk.CTk):

Fehler 2 :  File "C:\Users\arrou\OneDrive\Desktop\cheese\für acc\tmmail\main.py", line 59, in mailtm_gui

  knopf = ctk.CTkButton(main, text="n", command=neum())

FEHLER 3 :  File "C:\Users\arrou\OneDrive\Desktop\cheese\für acc\tmmail\main.py", line 56, in neum

  mail_body = ctk.CTkEntry(mail_window, placeholder_text='Subject: ' + message['subject'] + '\nBody: ' + (message['text'] if message['text'] else message['html']), width=900, font=('Helvetica', 20))

TypeError: 'module' object is not subscriptable

import customtkinter as ctk
from mailtm import *
from mailtm import message


def listener(message):
    print("\nSubject: " + message['subject'] + str(listener))
    print("Content: " + message['text'] if message['text'] else message['html'] + str(listener))


test = Email()
print("\nDomain: " + test.domain)

test.register()
print("\nEmail Adress: " + str(test.address))


test.start(listener, interval=3)
print("\nHab Sabr.....")


main = ctk.CTk()
main.geometry("500x320")
main.title("Temp mail By Amjn")


emaila = ctk.CTkEntry(main, placeholder_text="         " + test.address, width=900, font=("Helvetica", 20))
emaila.configure(state="readonly")
emaila._corner_radius = 10
emaila.pack()


Copyt = ctk.CTkLabel(main, text="Copy Email", font=("Helvetica", 20))
Copyt.pack()


class mailtm_gui(ctk.CTk):
    def __init__(self):
        ctk.CTk.__init__(self)
        self.geometry('500x320')
        self.title('Temp mail By Amjn')
        listener = Email()
        listener.register()
        emaila = ctk.CTkEntry(self, placeholder_text=listener.address, width=900, font=('Helvetica', 20))
        emaila.configure(state='readonly')
        emaila._corner_radius = 10
        emaila.pack()
        listener.start(listener, interval=3)

    def neum():
        mail_window = ctk.CTkToplevel()
        mail_window.title("amjs tm by mailtm")
        mail_window.geometry('500x320')
        mail_window.corner_radius = 30
        mail_window.resizable(width=True, height=True)
        mail_body = ctk.CTkEntry(mail_window, placeholder_text='Subject: ' + message['subject'] + '\nBody: ' + (message['text'] if message['text'] else message['html']), width=900, font=('Helvetica', 20))
        mail_body.pack()

    knopf = ctk.CTkButton(main, text="n", command=neum())


main.mainloop()
Code, Programmiersprache, Python, Python 3, Tkinter, Pycharm

Python: Wie kann ich feld1 bis feld7 so zusammenfassen, sodass ich das nicht alles einzeln eingeben muss?

Hey, ich möchte feld1 bis feld7 so zusammenfassen, sodass ich das nicht alles einzeln eingeben muss. Dazu finde ich nur leider nichts im Internet.

import tkinter as tk from tkinter import *

modul = tk.Tk()
modul.geometry("900x900")
modul.title("Bunt3x3")
modul.resizable(width=False, height=False)

r = "red"
y = "yellow"
g = "green"
b = "blue"

def change():
  if feld1["bg"] == r:
    feld1.config(bg=g)
    feld3.config(bg=g)
    feld5.config(bg=g)
    feld7.config(bg=g)
    feld2.config(bg=b)
    feld4.config(bg=b)
    feld6.config(bg=b)
    feld8.config(bg=b)

    feldlabel.config(text="Rot & gelb")

  elif feld1["bg"] == g:
    feld1.config(bg=r)
    feld3.config(bg=r)
    feld5.config(bg=r)
    feld7.config(bg=r)
    feld2.config(bg=y)
    feld4.config(bg=y)
    feld6.config(bg=y)
    feld8.config(bg=y)

    feldlabel.config(text="Gruen & blau")

feld1 = tk.Frame(bg=r, width=300, height=300)
feld1.grid(column=1, row=1)
feld3 = tk.Frame(bg=r, width=300, height=300)
feld3.grid(column=3, row=1)
feld5 = tk.Frame(bg=r, width=300, height=300)
feld5.grid(column=1, row=3)
feld7 = tk.Frame(bg=r, width=300, height=300)
feld7.grid(column=3, row=3)
feld2 = tk.Frame(bg=y, width=300, height=300)
feld2.grid(column=2, row=1)
feld4 = tk.Frame(bg=y, width=300, height=300)
feld4.grid(column=1, row=2)
feld6 = tk.Frame(bg=y, width=300, height=300)
feld6.grid(column=3, row=2)
feld8 = tk.Frame(bg=y, width=300, height=300)
feld8.grid(column=2, row=3)

feld = tk.Frame(bg="white", width=300, height=300).grid(column=2, row=2)
feldlabel = tk.Label(text="Gruen & blau", bg="white", fg="black", font=("Arial", 15, "bold"))
feldlabel.grid(column=2, row=2)
feldbutton = tk.Button(text="Farbe aendern!", font=("Arial", 15, "bold"), bg="white", fg="black", command=change).place(x=370, y=470)
modul.mainloop()
programmieren, Array, Informatik, Python, Zusammenfassung, Variablen, list, Tkinter

Python programmieren, Objektorientierte Programmierung in verschiedenen Dateien mit Klassen?

Hey,

ich lerne aktuell Python und habe angefangen einen Chatbot zu programmieren.
Nun will ich anfangen mir anzugewöhnen in verschiedenen Dateien mit Objektorientierter Programmierung zu programmieren bzw. das erstmal zu lernen.
Mein Gedanke in meinem Code ist z.B. eine Klasse WindowTemplate zu erstellen und diese als Blaupause ohne vorgegebene Werte zu definieren.
An Sich gelingt mir das auch aber ich habe Probleme von einer anderen Klasse aus einer anderen Datei darauf zuzugreifen und die Werte für wie zum Beispiel Größe oder Titel zu übergeben.
Ich würde mich freuen wenn hier mal jemand der etwas Erfahrung hat drauf schauen könnte und mich zumindest mal in die richtige Richtung leiten kann. :)
Viele Dank!

main.py

Fehlermeldung ist diese:

Traceback (most recent call last):

line 17, in <module>

  app = Main()

     ^^^^^^

line 9, in __init__

  self.main_window.set_size("1680", "900")

line 10, in set_size

  self.window_size.geometry(f"{width}x{height}")

  ^^^^^^^^^^^^^^^^^^^^^^^^^

AttributeError: 'NoneType' object has no attribute 'geometry'

import view
import customtkinter as ctk


class Main(ctk.CTk):
    def __init__(self):
        super().__init__()
        self.main_window = view.WindowTemplate()
        self.main_window.set_size("1680", "900")
        self.main_window.set_title("YourTerminal")

    def my_mainloop(self):
        self.mainloop()


if __name__ == "__main__":
    app = Main()
    app.my_mainloop()

view.py

import customtkinter as ctk


class WindowTemplate:
    def __init__(self, window_size=None, window_title=None):
        self.window_size = window_size
        self.window_title = window_title

    def set_size(self, width, height):
        self.window_size.geometry(f"{width}x{height}")

    def set_title(self, title):
        self.window_title.title(title)
Code, Programmiersprache, Python, Python 3, Objektorientierte Programmierung, Tkinter, Pycharm