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-Key: 315837

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

Printed on: April 26, 2024 at 21:04 o'clock

Member: tomolpi
tomolpi Sep 21, 2016 at 13:35:29 (UTC)
Goto Top
python button onclick event
bringt doch in Google viele Ergebnisse. Nimm doch eins davon face-smile
Member: colinardo
colinardo Sep 25, 2016 updated at 16:25:16 (UTC)
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
Member: Scuzzy
Scuzzy Sep 28, 2016 at 07:54:31 (UTC)
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.
Member: colinardo
Solution colinardo Sep 28, 2016 updated at 08:11:48 (UTC)
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()
Member: colinardo
colinardo Sep 28, 2016 at 08:12:05 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.
Member: Scuzzy
Scuzzy Sep 28, 2016 at 09:00:50 (UTC)
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)
Member: colinardo
colinardo Sep 28, 2016 updated at 10:20:21 (UTC)
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.