Tix - Combobox und Tippfenster(Ballon)

Fragen zu Tkinter.
Antworten
anbabe
User
Beiträge: 12
Registriert: Freitag 4. Dezember 2009, 13:05

Bei der Konfiguration für die Combobox und das Tippfenster fehlen mir noch 2 Optionen:
- bei der ComboBox bleibt im Entryfeld ein Randbereich, der sich nicht beeinflusssen lässt
- beim Tippfenster (Balloon) lässt sich die räumliche Lage nicht verschieben.

Beide Probleme sind wahrscheinlich nicht erheblich, ärgerlich ist es aber trotzdem (für mich).

Hier mal ein kurzes Beispiel:

Code: Alles auswählen

# -*- coding: iso-8859-15-*-
import Tix as tx

root = tx.Tk()
root.geometry('400x100')

def test(event):
    root.config(bg=w.entry.get())
# hier die Combobox
opts1='borderWidth 2 listbox.width 5 listbox.height 4 listbox.background white'
w = tx.ComboBox(root,dropdown=1,editable=True,options=opts1,command=test)
color_list = ['red', 'lightyellow','green', 'blue', 'yellow', 'white', 'magenta'] 
for i in color_list:
    w.slistbox.listbox.insert('end', i)
w.pack(pady=10)

# hier das Tipp-Fenster
opts2='height 5 anchor nw width 20 justify left font "verdana 10" \
    background lightyellow foreground red'
tipp = tx.Balloon(root,options=opts2)
tipp.config(initwait=100,bd=2,bg='blue')
tipp.bind_widget(w,msg='Hier Farbe für den\nHintergrund des\nFensters wählen')

e=tx.Entry(root)
e.insert(0,'Blah, bluh, blatsch')
e.pack(pady=10)

root.mainloop()

anbabe
User
Beiträge: 12
Registriert: Freitag 4. Dezember 2009, 13:05

Ich bin's selbst!
Entweder ist die Problematik zu trivial oder es gibt tatsächlich keine Lösung oder beides trifft zu.
Egal, ich habe mir noch mal einige Gedanken gemacht und eine Lösung gefunden. Eigentlich ist es nur etwas Trickserei, aber so könnte man es machen. Den blöden Rand um das Entry-Feld der Combobox konnte ich aber nicht beseitigen.
Hier das Beispiel - Vielleicht hat doch noch jemand eine Meinung oder eine bessere Idee:

Code: Alles auswählen

# -*- coding: utf-8 -*-
import Tix as tx

root = tx.Tk()
root.geometry('300x100')

def test(event):
    bg_ = var.get()
    tipp.config(bg=bg_)
    l.config(bg=bg_)
    root.config(bg=bg_)
    root.focus()

l = tx.Label(root,text='Farbe')
l.place(x=80,y=19)

tipp = tx.Label(root,font='verdana 7 bold',justify='center')

var = tx.StringVar()
w = tx.ComboBox(root,variable=var,editable=True,options='listbox.background white',command=test)
color_list = ['red','lightyellow','green','blue','yellow','white','magenta','skyblue','royalblue'] 
for i in color_list:
    w.slistbox.listbox.insert('end', i)
w.place(x=50,y=40,width=120)

tipp.place(x=75,y=16,height=25)

ba = tx.Balloon(root,statusbar=tipp,initwait=100)
ba.bind_widget(w,statusmsg='Wähle hier eine Hintergrundfarbe\n↓')

root.mainloop()
Antworten