Pop-Up

Fragen zu Tkinter.
Antworten
Nihtus
User
Beiträge: 14
Registriert: Mittwoch 4. Dezember 2019, 13:40

Hi Leute,

ich(halbwegs Amateur mit Python und Programmieren im Allgemeinen) schreibe gerade an einem kleineren Programm mit nem GUI. Nun will ich, dass innerhalb dieses Programms ein Button ein anderes Script aufruft. Dieses in sich öffnet noch ein eigenes kleines PopUp(dort habe ich eine Abfrage integriert). Nun will ich einfach nur einen command haben, mit dem ich das Script öffenen kann. Ich hab mir schon Sachen wie subprocess.Popen angeschaut, jedoch fehlt mir das wissen und es scheitert meistens an der Syntax oder an der Beschreibung des Pfads(das Script ist innerhalb des Python-Ordners).
Danke für eure Hilfe.

LG
Nihtus
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Und warum funktioniert subprocess.Popen nicht? Zeige Code und die komplette Fehlermeldung.
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Von Python anderes Python per subprocess aufzurufen geht, aber klingt ohne guten Grund erstmal nach Gefrickel. Normalerweise importiert man code, und fuehrt in dann aus.

Und es fehlen Code und konkrete Probleme/Fehlermeldung. Irgendwas irgendwie mit subprocess kann man nur sagen - das geht natuerlich. Nur was genau du tun musst, haengt eben davon ab, was *genau* du tust.
Nihtus
User
Beiträge: 14
Registriert: Mittwoch 4. Dezember 2019, 13:40

__deets__ hat geschrieben: Mittwoch 4. Dezember 2019, 14:59 Von Python anderes Python per subprocess aufzurufen geht, aber klingt ohne guten Grund erstmal nach Gefrickel. Normalerweise importiert man code, und fuehrt in dann aus.

Und es fehlen Code und konkrete Probleme/Fehlermeldung. Irgendwas irgendwie mit subprocess kann man nur sagen - das geht natuerlich. Nur was genau du tun musst, haengt eben davon ab, was *genau* du tust.
Eigentlich hatte ich das vor zu vermeiden, weil das PopUp einen relativ langen(wahrscheinlich kürzbaren) Code enthält und ich das Main-Programm noch übersichtlich halten will.
Und zur Fehlermeldung: ich hab keine bekommen. Mit dem Code:

Code: Alles auswählen

subprocess.Popen("python Pop_Up.py")
hat sich bisher eine shell geöffnet, aber das Pop-Up nicht
Nihtus
User
Beiträge: 14
Registriert: Mittwoch 4. Dezember 2019, 13:40

Kleines Update: Ich hab den code eben noch ein paar mal in die Shell/IDLE getestet. Auf einmal funktioniert er, sogar auch wenn ich ihn in mein Programm rein schreibe. Keine Ahnung wieso. Das Problem hat sich irgendwie selber gelöst oder ich hab irgendwas am Code geändert, das vorher Probleme gemacht hat.
Dann habe ich aber noch eine andere Frage. Nun öffnet sich ja offensichtlich mit dem Pop-up eine Shell. Die würde ich wegen Design und so gerne im Hintergrund laufen lassen. Ist das irgendwie möglich oder muss in dem Code des Pop-Up's doch in den Main-Code kopieren?
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Von welchem Betriebssystem reden wir hier? Windows?
Nihtus
User
Beiträge: 14
Registriert: Mittwoch 4. Dezember 2019, 13:40

__deets__ hat geschrieben: Donnerstag 5. Dezember 2019, 11:56 Von welchem Betriebssystem reden wir hier? Windows?
Ja
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Nihtus: um Code übersichtlich zu halten, gibt es Module, die man einbinden kann. Dazu braucht es keine zwei Programme.
Nihtus
User
Beiträge: 14
Registriert: Mittwoch 4. Dezember 2019, 13:40

Sirius3 hat geschrieben: Donnerstag 5. Dezember 2019, 13:52 @Nihtus: um Code übersichtlich zu halten, gibt es Module, die man einbinden kann. Dazu braucht es keine zwei Programme.
Ich bin wie gesagt, relativ neu mit Programmieren. Klar weiß ich was Module sind, aber wie genau kann ich das script in ein solches verpacken? Ich schätze mal ich müsse dann mit import arbeiten.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Zeig doch einfach, was Du bisher hast.
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein Modul ist erstmal einfach nur eine Python-Datei, und wenn die an der richtigen Stelle liegt, kann 'meinmodul.py' von 'super-skript.py' einfach per 'import meinmodul' importiert werden. Und dann ruft man darin zB eine Funktion auf - 'meinmodul.tuwas()'.

Module und Pakete (Sammlungen von Modulen) sind alle im Tutorial von Python beschrieben, und auch an vielen anderen Stellen.
Nihtus
User
Beiträge: 14
Registriert: Mittwoch 4. Dezember 2019, 13:40

Sonst noch eine andere Frage.
Ich habe wie gesagt ein Pop-Up-Fenster bei dem über Radiobuttons unteschiedliche Sachen ausgewählt werden. Da der ttk.Radiobutton einfach besser aussieht, wollte ich diesem statt den normalen benutzen. Den wollte ich auch noch ein bisschen vom Desin ändern(eigentlich wollte ich genau den Effekt kopieren, dem man beim normalen ttkButton bekommt, wenn man über dem Button mit dem Cursor fährt. Kann man den Code, der da benutzt wird, irgendwo finden ?). Das bekomme ich auch alles hin, jedoch schaffe ich es einfach, eine Border um den Button mit 'relief' herum festzulegen:

Code: Alles auswählen

pop= tkinter.Tk()
style=ttk.Style()
style.map('TRadiobutton', background=[("selected", "azure2"),("active", "gray99")], relief=[("disabled", "groove")], highlightcolor=[("active", "blue")])
ttk.Radiobutton(pop, text= "Gehege 1", variable=Gehege, value="1").pack()
Gehege2 = ttk.Radiobutton(pop, text= "Gehege 2", variable=Gehege, value="2").pack()
Wenn ich beim normalen Button/Radiobutton 'relief' benutze funzt das.
Hat wer ne idee ?
Nihtus
User
Beiträge: 14
Registriert: Mittwoch 4. Dezember 2019, 13:40

__deets__ hat geschrieben: Donnerstag 5. Dezember 2019, 14:02 Ein Modul ist erstmal einfach nur eine Python-Datei, und wenn die an der richtigen Stelle liegt, kann 'meinmodul.py' von 'super-skript.py' einfach per 'import meinmodul' importiert werden. Und dann ruft man darin zB eine Funktion auf - 'meinmodul.tuwas()'.

Module und Pakete (Sammlungen von Modulen) sind alle im Tutorial von Python beschrieben, und auch an vielen anderen Stellen.
Ja das würde das Ganze vereinfachen. Dann müsste ich aber das ganze Pop-Up-Fenster als eine Funktion definieren oder ?
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Zeig uns doch deinen Code. Dann kann man das auch alles gut beantworten. Sich hier mit einzelnen Wuermern aus der Nase zu beschaeftigen ist etwas anstrengend. Und auch wenn wir hier nicht besonders streng sind was die Anlage von Themen angeht - es macht es einfacher die Frage nach Styling von etwas loszuloesen von der Diskussion wie der Code organisiert sein sollte. Das wuerde ich danach/in einem anderen Thema anschneiden.
Nihtus
User
Beiträge: 14
Registriert: Mittwoch 4. Dezember 2019, 13:40

__deets__ hat geschrieben: Donnerstag 5. Dezember 2019, 14:35 Zeig uns doch deinen Code. Dann kann man das auch alles gut beantworten. Sich hier mit einzelnen Wuermern aus der Nase zu beschaeftigen ist etwas anstrengend. Und auch wenn wir hier nicht besonders streng sind was die Anlage von Themen angeht - es macht es einfacher die Frage nach Styling von etwas loszuloesen von der Diskussion wie der Code organisiert sein sollte. Das wuerde ich danach/in einem anderen Thema anschneiden.
Ich fange einfach gleich ne neue Diskussion an. Dann ist die Frage nicht so versteckt. Aber sonst ist mein Problem eigentlich gelöst. Ich machs jetzt einfach als Modul. Danke für deine Hilfe!
Antworten