scuzzy
Goto Top

Python GUI Button funktionen?

Guten Tag,

ich möchte ein Skript bauen welches eine GUI öffnet und ich die auswahl zwischen 3 Browsern habe.
Ich wähle den Browser in einem Dropdown menü aus und drücke auf den button "installieren".
Nun soll die funktion ausgeführt werden welches auf die richtige installation weist.

Ich definiere also die funktionen bspw. "installie", "installfirefox" und "installchrome".

ich wähle chrome aus und drücke den button.
Jetzt muss der button halt auf die chrome funktion weisen, aber wie kann ich das realisieren?


Freue mich auf Hilfe!

Gruß,
Nik.

Content-ID: 315837

Url: https://administrator.de/contentid/315837

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

tomolpi
tomolpi 21.09.2016 um 15:35:29 Uhr
Goto Top
python button onclick event
bringt doch in Google viele Ergebnisse. Nimm doch eins davon face-smile
colinardo
colinardo 25.09.2016 aktualisiert um 18:25:16 Uhr
Goto Top
Hallo Nik,
damit der Thread hier nicht so einsam stehen bleibt, hier ein simples "tkinter-GUI" Beispiel von vielen Tausend anderen.
import subprocess
from tkinter import *

# Event handler
# start apps
def exec_app(app):
    # apps definieren die wir starten wollen
    apps = {
            "calc" : "C:/windows/system32/calc.exe",  
            "paint" : "C:/windows/system32/mspaint.exe",  
            "ie" : "C:/Program Files/Internet Explorer/iexplore.exe"  
    }
    # per Argument übermittelten Prozess starten
    subprocess.Popen(apps[app])

#root des Fensters erstellen
root = Tk()
# Titel und minimale Größe des Fensters festlegen
root.title("Das ist eine Demo App")  
root.minsize(width=250,height=50)
# Frame erstellen
frame = Frame(root)
frame.pack()
# Buttons erstellen
button1 = Button(frame,text="Start calc",command=lambda:exec_app("calc"))  
button2 = Button(frame,text="Start paint",command=lambda:exec_app("paint"))  
button3 = Button(frame,text="Start Internet Explorer",command=lambda:exec_app("ie"))  
# Buttons platzieren
button1.pack(pady=10,padx=5,side=LEFT)
button2.pack(pady=10,padx=5,side=LEFT)
button3.pack(pady=10,padx=5,side=LEFT)
# Fenster-Loop starten
root.mainloop()
Grüße Uwe
Scuzzy
Scuzzy 28.09.2016 um 09:54:31 Uhr
Goto Top
Aber so habe ich 3 Button.
Ich möchte einen einzigen Button der mit einem verweis auf die richtige funktion verweist.
Wenn ich z.B. chrome im dropdown auswähle er die funktion " dev chrome" ausführt.
colinardo
Lösung colinardo 28.09.2016 aktualisiert um 10:11:48 Uhr
Goto Top
Zitat von @Scuzzy:
Ich möchte einen einzigen Button der mit einem verweis auf die richtige funktion verweist.
Hast du ja oben face-smile , nehme ein DropDown bzw OptionMenu, das ist dein Stichwort ...

import subprocess
from tkinter import *

# Event handler
# start apps
def exec_app(app):
    # apps definieren die wir starten wollen
    apps = {
            "Chrome" : "C:/deinpfad/deine_chrome.exe",  
            "Firefox" : "C:/deinpfad/deine_firefox.exe"  
    }
    # per Argument übermittelten Prozess starten
    subprocess.Popen(apps[app])

#root des Fensters erstellen
root = Tk()
# Titel und minimale Größe des Fensters festlegen
root.title("Das ist eine Demo App")  
root.minsize(width=250,height=50)
# Frame erstellen
frame = Frame(root)
frame.pack()

# OptionMenu
choices = ["Chrome","Firefox"]  
selection = StringVar(root)
selection.set("Chrome")  
dd = OptionMenu(frame,selection, *choices)

# Button erstellen
button1 = Button(frame,text="Installation starten",command=lambda:exec_app(selection.get()))  

# Steuerelemente platzieren
dd.pack(pady=10,padx=5,side=LEFT)
button1.pack(pady=10,padx=5,side=LEFT)

# Fenster-Loop starten
root.mainloop()
colinardo
colinardo 28.09.2016 um 10:12:05 Uhr
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.
Scuzzy
Scuzzy 28.09.2016 um 11:00:50 Uhr
Goto Top
Kann ich die Ausführung der Installationen damit verbinden?
Das wenn ich chrome installieren möchte, das auf allen vms in der csv mache?

import csv
import paramiko

username = 'root'
password = 'adasdasd.'

csv.register_dialect(
'mydialect',
delimiter = ';',
quotechar = '"',
doublequote = True,
skipinitialspace = True,
lineterminator = '\r\n',
quoting = csv.QUOTE_MINIMAL)


print("Folgende VMs wurden eingelesen")
with open('D:\\Berufsschule\\aetest.csv', 'r') as mycsvfile:
thedata = csv.reader(mycsvfile, dialect='mydialect')
for ip, vm in thedata:
try:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.WarningPolicy())
print("Connecting to VM")
client.connect(ip, 22, username, password)
stdin, stdout, stderr = client.exec_command('yum install chrome')


except Exception as e:
print("Caught exception: %s: %s") % (e.__class__, e)
traceback.print_exc()
try:
client.close()
except:
pass
sys.exit(1)
colinardo
colinardo 28.09.2016 aktualisiert um 12:20:21 Uhr
Goto Top
Kann ich die Ausführung der Installationen damit verbinden?
Darfst du von mir aus gerne machen. Ist hier jetzt aber totally off-topic und nicht mehr Thema des Threads.