Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
hosts='C:/Users/Username/Desktop/test/testhosts.txt'
def test():
file = open(hosts,'a')
file.write('\n')
file.write(x) #hier fehlt bestimmt was, oder muss komplett anders sein, da man keine Funktion hier eintragen kann
file.close()
def x() ? #wie definieren, wenn überhaupt?
?
def sperren_action():
if (var1.get() == (1)):
test()
x=('127.0.0.1 www.amazon.com')
if (var2.get() == (1)):
test()
x=('127.0.0.1 www.twitter.com')
Und wenn du moechtest, das eine Datei geschrieben wird in einer Funktion mit veraenderlichen Inhalten, dann musst du die einfach per Parameter uebergeben.
Sowohl ` hosts` als auch `var1` kommen aus dem Nichts. Das sollte nicht sein, alles was eine Funktion braucht, muß sie auch über ihre Argumente bekommen. Außer Konstanten, die schreibt man aber GROSS. ` var1` ist zudem ein sehr schlechter Variablennamen, ` var` gilt für jede Variable, und 1 ist nur eine Nummer. Variablennamen müssen aussagekräftig sein.
Count hat geschrieben: Montag 2. Dezember 2019, 09:13
da kommt nichts aus dem Nichts^^
ist ja nur der Teil um den es mir ging und nicht das komplette Ding
Nehmen wir an, dein Code sähe vom Prinzip her so aus.
def sperren_action():
if var1.get():
sperren('127.0.0.1 www.amazon.com')
var1 = ...wasauchimmer...
sperren_action()
Das ist dann immer noch ein "aus dem Nichts". Genauer gesagt kommt var1 in der Funktion dann aus dem globalen Namensraum und das ist schlecht. Die Funktion ist dadurch mit ihrer Verarbeitung genau an die konkrete Umgebung gebunden. Alles was eine Funktion benötigt sollte sie über ihre Parameter erhalten und alles was sie gegebenenfalls bereitstellt über ein return-Statement zurückgeben. Du erreichst dadurch viel mehr Flexibilität und handliche einzeln testbare Prozeduren.
Mal abgesehen von den Namen wäre dann das Folgende der richtige Ansatz.