Python 3 – die besten Beiträge

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

Speicherung von Variablen in Python, Expertenfrage?

Eine Frage zu dem Übergeben, bzw. Verknüpfen von Variablen.

Gibt es in Python etwas sowas wie Pointer, die nicht für den Nutzer verfügbar sind sondern nur innertechnisch existieren?

Das Problem: ich habe eine Objekt1 wo eine Position einer von einem anderen Objekt2, aber gleiche Klasse, übergeben wird (nur im __init__) und diese Variable in dem Obejekt1 gespeichert wird. Ich zeichne dann aus den beiden Objekten einen Punkt anhand der gespeicherten Positions-Vektoren. Nun das Problem: wenn ich die Variable des Objekt2 "ändere", "ändert" sich auch der Wert des Objekt1 obwohl ich den übergebenen Positionswert NIE mehr aktualisiert habe, somit überschneiden sich die beiden Punkte...

Nun das kuriose: wenn ich bei der Übergabe der Positionsvariable vom Objekt2 zu Objekt1 bei der SPeicherung nicht self.pos = pos SONDERN self.pos = pos+pygame.math.Vector2(0,0) sage, ändert sich dafür der Positionswert des Objekt1 NICHT MEHR... Genau das will ich ja.

Nun meine Theorie warum das so sein könnte... Wen ich self.pos = pos sage speichere ich die Speicheradresse von der Variable des Objekt2, ich referiere quasi darauf. Immer wenn er die Variable im Objekt1 braucht geht er zur Speicheradresse und zieht die Variable aus dem RAM raus. Wenn ich aber self.pos = pos+pygame.math.Vector2(0,0) sage, erzwinge ich durch +pygame.math.Vector2(0,0), dass er die Variabel speichert und nicht nur die Speicheradresse...

Ist meine Thorie richtig? Wenn ja, gibt es noch andere Wege nicht nur die Speicheradresse sondern den Variablen Wert zu speichern?

Danke an jeden der sich das durchgelesen hat xD

LG

Computer, Technik, programmieren, Informatik, Python, Technologie, Python 3

Wie kann ich Punkt 3 und Punkt 4 in einer Funktion in Python implementieren?

In der Aufgabe steht:

Schreiben Sie ein Programm mit den folgenden Funktionen:

  • umfangKreis(radius)

Berechnen des Umfangs eines Kreises.

  • flaecheKreis(radius)

Berechnen des Flächeninhalts eines Kreises.

  • umfangKreis(radius)

Berechnen der Summe aller Umfänge einer Menge von Kreisen.

  • flaecheKreis(radius)

Berechnen der Summe aller Flächeninhalte einer Menge von Kreisen.

Rufen Sie in den Funktionen für eine Menge von Kreisen die bereits implementierten Methoden für das Berechnen des Umfangs und der Fläche der einzelnen Kreise auf. Auf diesem Weg sparen Sie sich die abermalige Implementierung der benötigten Formeln. Kopieren Sie das erstellte Programm mit den Funktionen in einem neuen Ordner. Testen Sie alle Funktionen an geeigneten Testbeispielen in einem separaten Programm. Beachten Sie hierzu den Hinweis für den Suchpfad von Python.

Ich habe das Ganze jetzt erstmal so gelöst, dass ich zwei Programme in einem Ordner gespeichert habe, also einmal definition.py, wo ich die die Formeln für Umfang und Flächeninhalt eines Kreises definiere, und einmal main.py, wohin ich für Punkt 3 und 4 hin exportieren möchte. Allerdings verstehe ich nicht so ganz, was mit der Menge von Kreisen gemeint ist. Wie könnte ich hier weiter fortfahren?

Computer, Schule, Mathematik, Technik, IT, programmieren, Kreis, Gleichungen, Informatik, Python, Technologie, Universität, kreisberechnung, Python 3

Meistgelesene Beiträge zum Thema Python 3