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

bestimmte Excel Inputs mit Python auswählen und in eine andere Excel-Datei einfügen?

Hallo zusammen,

ich würde gerne etwas Neues mit Python ausprobieren. Es geht um eine Excel-Datei, aus der ich bestimmte Einträge in eine andere Excel-Datei einfügen möchte. Wie ihr sehen könnt, möchte ich die Einträge, die einen Farbnamen enthalten, in eine andere Datei in Klammern einfügen und den Farbnamen übersetzt davor schreiben. Haben Sie eine Idee, wie ich das machen kann? Ich wäre Ihnen für jede Antwort dankbar.

import openpyxl
from openpyxl import Workbook, load_workbook
book = openpyxl.load_workbook('datei.xlsx')

result = 1
valuesK = []
i = 1

while result <= 101;
	pages = 'Sheet' + str(i)
	sheet = book.get_sheet_by_name(Sheet1)
	vK = sheet['G1': 'G2259']

	for row in vK:
		for cell in row:
			if blue in cell:
			valuesK.append('Blau (' + cell.value + ')')
			elif red in cell:
				valuesK.append('Rot (' + cell.value + ')')
			elif grey in cell:
				valuesK.append('Grau (' + cell.value + ')')
			elif black in cell:
				valuesK.append('Schwarz (' + cell.value + ')')
			elif white in cell:
				valuesK.append('Weiß (' + cell.value + ')')
			elif offwhite in cell:
				valuesK.append('Elfenbein (' + cell.value + ')')
			elif brown in cell:
				valuesK.append('Braun (' + cell.value + ')')
			elif beige in cell:
				valuesK.append('Beige (' + cell.value + ')')
			elif pink in cell:
				valuesK.append('Pink (' + cell.value + ')')
			elif yellow in cell:
				valuesK.append('Gelb (' + cell.value + ')')
			elif orange in cell:
				valuesK.append('Orange (' + cell.value + ')')
			elif green in cell:
				valuesK.append('Grün (' + cell.value + ')')
			elif turquoise in cell:
				valuesK.append('Türkis (' + cell.value + ')')
			elif purple in cell:
				valuesK.append('Violett (' + cell.value + ')')
			elif gold in cell:
				valuesK.append('Gold (' + cell.value + ')')
			elif silver in cell:
				valuesK.append('Orange (' + cell.value + ')')
			else:
				valuesK.append('Multicolour (' + cell.value + ')')



	i += 1
	result +=1

	wb = Workbook()
	ws = wb.active

	filename='dosya'

	i = 0
	for i in valuesK:
		j += 1
		ws['A' + str(j)] = i
		int(j)

wb.save('datei2.xlsx')
Computer, Microsoft Excel, programmieren, Code, Informatik, Programmiersprache, Python, Softwareentwicklung, Python 3, Data Science

PyQt5 WebEngine mehrere WebViews mit jeweils unterschiedlichen Proxys in einem Fenster funktioniert nur bei den ersten beiden Proxys?

Hallo liebe Community,

Ich wollte mit PyQt eine Oberfläche Implementieren, die mehre Websites mit unterschiedlichen Proxys pro Laufzeit aufruft, und anzeigt.

Das soll dann ungefähr so aussehen:

, nur, dass beim 2. Fenster eine andere Proxyaddresse stehen sollte. Hier ist mein Code:

import json
import random
import threading
import time
from typing import *
import requests

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import requests, re
from PyQt5.QtWebEngineWidgets import *
import PyQt5.QtNetwork
import PyQt5.QtWidgets

def refresh_browser():
    time.sleep(10)
    host, port, ct = random.choice(proxylist)
    print(host, port, ct)
    PyQt5.QtNetwork.QNetworkProxy.setApplicationProxy(
        PyQt5.QtNetwork.QNetworkProxy(PyQt5.QtNetwork.QNetworkProxy.Socks5Proxy, host, port))
    window.refresh.click()


proxylist = [(a, b, c) for a, b, c in json.load(open("proxies.txt")) if c == "DE"]
available_proxiy_protocols = {"socks5":PyQt5.QtNetwork.QNetworkProxy.Socks5Proxy, "http":PyQt5.QtNetwork.QNetworkProxy.HttpProxy}
class Browser(QMainWindow):
    def __init__(self, url, proxylist: List):
        super(Browser, self).__init__()
        self.window = QWidget()
        self.layout = QVBoxLayout()
        self.horizontal = QHBoxLayout()
        self.browsers = []
        self.c = 0

        
        self.current_url = url

        self.button = QPushButton()
        self.button.clicked.connect(lambda: self.navigate(self.current_url))

        self.refresh = PyQt5.QtWidgets.QPushButton()
        self.refresh.clicked.connect(lambda: self.refr(self.current_url))


        for proxy in proxylist:
  
    
                #HIER MUSS ETWAS GEÄNDERT WERDEN
                self.browser = QWebEngineView()
    
                self.layout.addLayout(self.horizontal)
                self.layout.addWidget(self.browser)
                self.browser.setUrl(QUrl(self.current_url))
                self.browsers.append(self.browser)
    
            self.window.setLayout(self.layout)

        self.window.show()
    
    def navigate(self, url): self.browser.setUrl(QUrl(url))
    def refr(self, url):
        for br in self.browsers:
            br.setUrl(QUrl(url))
host, port, ct = random.choice(proxylist)
print(host, port, ct)
#PyQt5.QtNetwork.QNetworkProxy.setApplicationProxy(PyQt5.QtNetwork.QNetworkProxy(PyQt5.QtNetwork.QNetworkProxy.Socks5Proxy, host, port))
app = QApplication([])


proxys = [("104.255.170.63", 60757), ("103.241.227.114", 6667)]
ip = "https://httpbin.org/ip"
PyQt5.QtNetwork.QNetworkProxy.setApplicationProxy(PyQt5.QtNetwork.QNetworkProxy(PyQt5.QtNetwork.QNetworkProxy.Socks5Proxy, proxys[0][0], proxys[0][1]))
print(proxys)
window = Browser(ip, proxys)


app.exec()

Kann mir jemand helfen, uns mir sagen, wie ich nach jederm Browserfenster, das erstellt wird, einen anderen Proxy setzen kann?

Vielen Dank Im Voraus

LG Lukas Zander

Bild zum Beitrag
Python 3

Python Socket Programmierung Error?

#Server
import socket
ip_input = input("Gib deine IP an: ")
ip_input = str(ip_input)
IP_SERVER = ip_input
DISCONNECT_MESSAGE = "!DISCONNECT"
def start():
  server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  server.bind( (IP_SERVER, 5050) )
  print("Server gestartet")
  server.listen()
  conn, addr = server.accept()
  print(f"Client with IP {conn} connected")
  while True:
    msg = server.recv(1024)
    msg.decode("utf-8")
    print(f"Message: {msg}")
    if msg == DISCONNECT_MESSAGE:
      server.close()
      conn.close()
if __name__ == "__main__":
  start()
#Client
import socket
def start():
  server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  server.connect( ("192.168.1.100", 5050) )
  while True:
    msg = str(input("Your Message: "))
    msg = msg.encode()
    server.send(msg)
    answer = server.recv(1024)
    answer = answer.decode("utf-8")
    print(f"Antwort: {answer}")
if __name__ == "__main__":
  start()
#Error

Gib deine IP an: 192.168.1.100

Server gestartet

Client with IP <socket.socket fd=372, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.1.100', 5050), raddr=('192.168.1.100', 60324)> connected

Traceback (most recent call last):

 File "c:\Users\User\OneDrive\Python\Server_2.py", line 26, in <module>

  start()

 File "c:\Users\User\OneDrive\Python\Server_2.py", line 17, in start

  msg = server.recv(1024)

OSError: [WinError 10057] Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde

Computer, Netzwerk, programmieren, Informatik, Python, Python 3

Meistgelesene Beiträge zum Thema Python 3