Widget mit Hintergrund und Text

Fragen zu Tkinter.
Antworten
raiminator
User
Beiträge: 31
Registriert: Dienstag 1. Mai 2012, 08:06

Hey,

Ich habe in einem Frame zwei Labels, eins mit Hintergrundbild und eins mit Text. Der Text soll zentriert und AUF dem Hintergrund sein. Wie geht das? Hier mein Code, wenn ich den so ausführe wird der Text unter dem Bild angezeigt der Frame im Prinzip nach unten erweitert.

Code: Alles auswählen

f = Frame(mainMenu, width=500, height=50, bg='#000044')
f.pack()
bg = Label(bF, image=btnBG)bLbg.pack()
bg.pack(fill=BOTH)
text= Label(bF, text=S, fg='#eeeeee', bg='#000044')
text.pack(fill=BOTH)
oder kann man irgendwie einem Label Hintergrundbild und Text geben?
Danke!
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi raiminator

Meinst du sowas?:

Code: Alles auswählen

import Tkinter as tk

IMAGE =\
'''
R0lGODlhNQA1AMYoAAAAAAAEAAgECAgICAgMCBAMEBAQEBAUEBgUGBgYGBgc
GCAcICAgICAkICkkKSkoKSksKTEsMTEwMTE0MTk0OTk4OTk8OUE8QUFAQUFE
QUpESkpISkpMSkpQSlJMUlJQUlJVUlpVWlpZWvAgAFpdWmJdYmJhYmJlYvAw
AGplamppamptanNtc3Nxc3N1c3t1e3t5e3t9e4N9g4OBg4OFg4uFi4uJi4uN
i5SNlJyRe5SRlJSVlJyVnJyZnJydnPCQAKSdpKShpKSlpKylrKyqrKyurLSu
tLSytLS2tL22vfDAAMW6nM26i726ve7CIL2+vcW+xcXCxebGWsXGxf/OAPbK
Me7KSv/OCP/KKf/SAM3Gzf/SGM3Kzf/OMd7OlP/WGM3OzdXO1f/WOf/WStXS
1fbaYtXW1d7W3v/eat7a3t7e3v/ie+be5ubi5v/qi+7m7u7q7vbuze7u7v/y
vfby9v/y3vb29v/2///6//////AwAPAwAPAwAPAwAPAwAPAwACH+FUNyZWF0
ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgB/ACwAAAAANQA1AAAH/oB/goOEhYaH
iIYjhIuLiY+QkYySlJWGKH8omJiOlp6PmIKhn6SHmpqZmaOlpaGbf3OssqKq
mG5UYoNKs5avqX9fVF5/SsW8va4oZVlMxMeSHkg2LWhUVFtjY1RXus+PHEl3
dGtUTlJYVV1WS86sNzIyQU1NR0c3IBUnQoInTTZ0dsRQyTHjSaFdpEi0aJMn
jx06cN6oSUMmigkACULokHGhCZ06ce6oEPSj3ScSM+TkwXNHDpw2bMyQ4aLl
SRMWA0h8mAAAwL+HTVzI8tGBYR5xEdlQDKMlSpMkRohYeHBAQE8AEmw0ITGy
FAkcK1u+ZHNmphYo9IwMCdKjxNW3/j0bsCIBxCFEiUunOE1ShEgQIDt02GgA
t+cAViuIiIUpk6bNI0aEsOVxw8YMGRYKAxBKykePuxPJhNH7tO/fwDZqyIDR
okJhA6xAvFTTuGZayT0oW5bxwsUKFRI0c0h4JjQY0nz9AhZcIwZrFidMiEig
GQApFrUfR55c+bKLFipSkBDxYUN1ABA8kYgyeq/p5amdt2CRQnoIDxseWK3u
ycKUx0XgtkN3MnwXXgnkeaABBhUMcB4AGFRyAwtNIGGaD6jRIB909nGwAQYX
TLAAAAEAYFWJbx1GyQwzBMjdbgaKl2AGDFIAAWEP9mTDijIA0YMOOMT3XHQi
hOAhiBNI/vCAAwGUeKKJJL5VCQAkDGhZDDGO94EHNFZg4wMMKIBijgBYQAkA
FNSgIWsrEGnkhyEq6YACCDQJpZNRWrXfA2cO0Bt4Mm7Z5ZcMLHBAAWSaGIBV
fEoSF4dFHhnnkgokUICDeGYK5QADGOBgo5FcxcAHH3DQ5QQQgKnAAQaMeV6T
AxBgwAEIAAAqJClGYIEFST7QAJ0EOPjksHkOUIABCCSwAHW3PqJZrJzamSgA
nBpgQAIJMNDAiGZKQkB1mhKLpwACFFAAAggssIADD0RAXSXmTVudAMYiqywD
7EogQa2WzJvnv04GEOusCSig7QMQUECBBZz2K+9VTRZAAK0L/ijQgAMRQDBB
BRc8AEAFloAAl7h3Utvptdky8MAD+lZgAQYZ1EqDJ/IKLOsBBR8MgQQbW5BB
Bq7J5ckHhRFL77HJLoBvuxJQwDEGG0Tt4AykfHtetSgzoDLLElRQAQZQb/AB
dRmwApeTAhBAALoKrItxBApfcIEGGnjgQQgMAKCALCSMXG/SS0fQ9NMabODB
B3hTe8MsHFyVNsEGN4Awzy7DvAEHH4CQ+ABU8yLCVQUcoIDFDUAA9wQWzJ0B
B3eDoIGDsHnzh4MAFLB1y1+HTaoIHjgQl+yDZNCTAAlE0LPlmHtQgQKGAW8I
BlcZoIADki9Za0+xO39ICxMcoJnQCdqHL/745HsSCAA7
'''

app_win = tk.Tk()

frame = tk.Frame(app_win)
frame.pack()

label_image = tk.PhotoImage(data=IMAGE)

label = tk.Label(frame, text='Bums!', image=label_image, fg='green',
    bg='steelblue', compound='center', font=('Helvetica', 12, 'bold'),
    padx=10, pady=10)
label.pack()

app_win.mainloop()
Gruß wuf :wink:
Take it easy Mates!
raiminator
User
Beiträge: 31
Registriert: Dienstag 1. Mai 2012, 08:06

funktioniert! komisch, bei mir wurde bis jetzt der Text nie angezeigt wenn ich das so mache :D
macht compound='center' dass es zentriert ist?
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

raiminator hat geschrieben:macht compound='center' dass es zentriert ist?
Stimmt. Du kannst den Text auch links, rechts, oben oder unten platzieren. Hier noch eine nähere Beschreibung:
Effbot Label Widget
Funktioniert auch bei einem Button-Widget.

Gruß wuf :wink:
Take it easy Mates!
Peter Gerlach
User
Beiträge: 24
Registriert: Donnerstag 14. Februar 2008, 18:16

.. aber warum funktioniert es denn eigentlich? Wenn ich die Beschreibung lese, steht dort doch, dass bei Anwendung der Option image die Option text ignoriert wird, oder? Und trotzdem kommt beides?

text=
The text to display in the label. The text can contain newlines. If the bitmap or image options are used, this option is ignored. (text/Text)

Aber es funktioniert trotzdem. kann mir das mal jemand erklären?

PGe.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Peter Gerlach

Code: Alles auswählen

compound
ist die Zauberformel.

Gruß wuf :wink:
Take it easy Mates!
Peter Gerlach
User
Beiträge: 24
Registriert: Donnerstag 14. Februar 2008, 18:16

Hi Wuf, danke. Hab schon an mir gezweifelt, dabei habe ich im Text bloß an der falschen Stelle geguckt. :-)

PGe.
Antworten