Seite 1 von 1

Platzhalter in einer Message Box

Verfasst: Donnerstag 9. Juli 2015, 15:01
von Python86
Hallo Liebe Community,

die Platzhalter für print Anweisungen sind wie folgt:

Code: Alles auswählen

a=Ich
b=bin
c=15

print("%s"%a,"%s"%b,%i"%c)
Ich bin 15

Ich versuche Platzhalter für Message Boxen zu erstellen, kriege es aber nicht hin,

z.B.

Code: Alles auswählen

 ctypes.windll.user32.MessageBoxA(0,"Ich bin 15","Mein Alter",1)

 ctypes.windll.user32.MessageBoxA(0,"%s"%a,"%s"%b,%i"%c,1) ->funktioniert nicht 
die VBA methode ebenfalls nicht:

Code: Alles auswählen

 ctypes.windll.user32.MessageBoxA(0,"& a &"& b &"& c &,1)
Weis einer die Lösung? :K

Könnt ihre gegebenenfalls eine MessageBox Variante empfehlen bei der man solche Platzhalter platzieren kann? :K

Bei Tkinter und co. habe ich ebenfalls keine Lösung gefunden. :K

Vielen Dank für eure Hife :roll:

Re: Platzhalter in einer Message Box

Verfasst: Donnerstag 9. Juli 2015, 15:14
von BlackJack
@Python86: Das erste Programm ist syntaktisch nicht korrekt, so kann das also nicht funktionieren und selbst wenn man die ganzen offensichtlichen Fehler korrigiert ist es Unsinn bei einem `print()` jedes Argument für sich alleine per ``%``-Operator in eine Zeichenkette zu formatieren die ausschliesslich aus dem Platzhalter besteht. Das heisst selbst für den `print()`-Fall hast Du die Verwendung noch nicht richtig verstanden. Zumal man bei neuem Python-Quelltext in der Regel auch eher die `format()`-Methode (oder für Einzelwerte die `format()`-Funktion) verwenden würde anstatt des ``%``-Operators.

Aufrufe raten funktioniert selten und Syntax raten schon mal gar nicht. Der ``&``-Operator hat in Python eine ganz andere Bedeutung als in VBA (und in C wieder eine ganz andere).

Ich würde falls da nichts wichtiges gegen spricht eher Tk für die Anzeige von einem Nachrichtenfenster verwenden statt etwas Low-Level-Windows-eigenes. Es gäbe da in Python 3 beispielsweise `tkinter.messagebox.showinfo()`.

Dein Platzhalterproblem ist aber grundsätzlich unabhängig davon ob Du nun `print()`, Windows-Fenster, Tk, oder eine andere GUI verwendest. Du musst bei allen eine Zeichenkette mit dem Text übergeben und in so eine Zeichenkette die Werte hineinformatieren. Wie gesagt, bietet sich da die `format()`-Methode auf Zeichenketten an.

Re: Platzhalter in einer Message Box

Verfasst: Donnerstag 9. Juli 2015, 15:30
von Python86
@BlackJack

Sorry du hast recht.

Hier ein Beispiel das auch klappt:

Code: Alles auswählen

R=15*20

print ("Die Zahl beträgt %.2f"%(R))
Wie kann ich dieses Beispiel in einer Msgbox ausgeben?

Vielen Dank

Re: Platzhalter in einer Message Box

Verfasst: Donnerstag 9. Juli 2015, 15:43
von BlackJack
@Python86: In dem Du das Ergebnis der Zeichenketteformatierung an der entsprechenden Stelle als Argument übergibst. Zum Beispiel als `message`-Argument bei einem `showinfo()`-Aufruf aus dem entsprechenden tkinter-Modul. Das ist jetzt aber wirklich *einfach*.

Re: Platzhalter in einer Message Box

Verfasst: Freitag 10. Juli 2015, 11:58
von Kebap
Trenne mal dein Problem in zwei kleinere Probleme. In der ersten Zeile erzeugst du den kompletten Text, der (mit print oder Message Box) angezeigt werden soll. Diesen speicherst du in einer Variable. In der zweiten Zeile erst benutzt du dann diese Variable, um den gewünschten Text an sein Ziel zu übergeben. Mir scheint, an dieser Stelle geht bei dir vielleicht etwas schief. Komplizierte Probleme in kleinere und lösbare zu teilen, ist eine häufige Aufgabe beim Programmieren. Bist du wirklich 15 Jahre? Jedenfalls herzlich willkommen bei Python!

Re: Platzhalter in einer Message Box

Verfasst: Freitag 10. Juli 2015, 17:18
von Python86
@Kebap

Nein bin 29 Jahre :-).

Ich habe es gestern hinbekommen:

Code: Alles auswählen

def Mbox(title, text, style):
    ctypes.windll.user32.MessageBoxA(0, text, title, style)

zahl1=10.1234568
zahl2=25
text=("%.2f und %i")%(zahl1,zahl2)
            
Mbox("Probe", text, 0)
Analog geht das geht es auch mit easygui. Tkinter konnte bei meiner Problemstellung leider nicht helfen

Nochmals Danke an Alle für die Tips