Hallo Ich bin noch python Anfänger und habe mir unten aufgeführte Script gebaut. Leider wird das ###MAKING GET REQUEST### ohne click des Buttons aufgeführt. Was mach ich falsch?
import requests
from requests.auth import HTTPBasicAuth
from datetime import datetime
from tkinter import messagebox
import pytz
import subprocess
import os
import sys
from tkinter import *
root=Tk()
root.geometry('300x300')
root.title('ACBackup - powerd by ')
a = Label(root, text="Welcome to AC Backup")
a.pack()
#def backup():
# os.system('backup.py')
# Create a Button
btn = Button(root, text='Start Backup', bd='5', command=response)
# Set the position of button on the top of window.
btn.pack(side='top')
##IGNORE SSL WARNING###
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
#######################
###GETTING TIME IN IST FORMAT####
IST = pytz.timezone('Europe/Berlin')
datetime_ist = datetime.now(IST)
current_datetime = datetime_ist.strftime('%d%m%Y_%H%M')
#######################
##AUDIOCODES SBC IP ADDRESS##
url = "192.168.12.245"
#######################
###MAKING GET REQUEST###
response = requests.get('https://' + url + '/api/v1/files/ini', auth=HTTPBasicAuth('Admin', '12345'), verify=False)
if response.status_code == 200:
with open(url + "_" + current_datetime + "_backup.ini", "w") as f:
f.write(response.text)
f.close()
print("Successfully backed up the INI file")
messagebox.showinfo("Backup Erfolgreich", 'Successfully backed up the INI file')
else:
print("Backup has been failed with an error status of", response.status_code)
print("Error Description is: ", response.text)
root.mainloop()
Tkinter Button click Problem
Hallo,
wenn du mit 'command' etwas aufrufen willst, dann muss das eine Funktion sein, kein Namen.
Alles was auf Modulebene steht (ohne Einrückungen) wird beim Programmstart sofort ausgeführt. Da man das nicht will und da das auch zu deinem Problem geführt hat, gehört jeder ausführbare Code in eine Funktione, die bei Bedarf aufgerufen wird.
Grüße
Dennis
wenn du mit 'command' etwas aufrufen willst, dann muss das eine Funktion sein, kein Namen.
Alles was auf Modulebene steht (ohne Einrückungen) wird beim Programmstart sofort ausgeführt. Da man das nicht will und da das auch zu deinem Problem geführt hat, gehört jeder ausführbare Code in eine Funktione, die bei Bedarf aufgerufen wird.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Für Anfänger: *-Importe sind böse, weil sie eine unkontrollierte Menge an Namen in den eigenen Namensraum schaufeln. Das macht den Code schwer nachvollziehbar, woher welcher Name kommt.
Tk-Inter wird üblicherweise als `import tkinter as tk` eingebunden und alle Namen per tk.-Präfix angesprochen.
Auf oberster Ebene darf es keinen ausführbaren Code geben. Das verhindert, dass man globale Variablen benutzt, dass Code und Funktionsdefinitionen wild gemischt werden und dass man die Programme nicht sinnvoll testen kann.
Variablennamen müssen aussagekräftig sein, und dürfen keine Abkürzungen enthalten. `a` für ein Label? IST für mItteleurpäiSche zeiT?
Strings setzt man nicht mit + zusammen, auch keine URLs. Credentials werden am besten als Konstanten an den Anfang der Datei geschrieben (wenn überhaupt).
Wenn man with benutzt, dann braucht man kein `close`.
Bei mir fliegt das Programm mit der Meldung raus, dass `response` zum Zeitpunkt, wo der Button definiert wird, gar nicht exisitiert.
command braucht eine Funktion als Argument. Du hast aber gar nirgends eine Funktion definiert.
Tk-Inter wird üblicherweise als `import tkinter as tk` eingebunden und alle Namen per tk.-Präfix angesprochen.
Auf oberster Ebene darf es keinen ausführbaren Code geben. Das verhindert, dass man globale Variablen benutzt, dass Code und Funktionsdefinitionen wild gemischt werden und dass man die Programme nicht sinnvoll testen kann.
Variablennamen müssen aussagekräftig sein, und dürfen keine Abkürzungen enthalten. `a` für ein Label? IST für mItteleurpäiSche zeiT?
Strings setzt man nicht mit + zusammen, auch keine URLs. Credentials werden am besten als Konstanten an den Anfang der Datei geschrieben (wenn überhaupt).
Wenn man with benutzt, dann braucht man kein `close`.
Bei mir fliegt das Programm mit der Meldung raus, dass `response` zum Zeitpunkt, wo der Button definiert wird, gar nicht exisitiert.
command braucht eine Funktion als Argument. Du hast aber gar nirgends eine Funktion definiert.