Multiline-Listbox?

Fragen zu Tkinter.
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich versuche gerade ohne viel von Tk zu verstehen, folgendes zu erreichen: Ich möchte gerne eine Liste von mehrzeiligen Textfragmenten als Liste darstellen, von denen man jeweils eines auswählen kann. Ich kenne Swing oder Flex. Dort würde ich eine Liste mit speziellen Cell bzw. Item Renderern benutzen. Doch wie geht man bei Tk vor?

`Listbox` scheint nur Strings zu können. `Message` scheint in der Lage zu sein, einen mehrzeiligen String anzuzeigen. Diese schaffe ich auch untereinander anzuordnen? Gibt es ein "ScrollPane" oder ähnliches?

Stefan
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mist. Nachdem ich jetzt 2h damit verschwendet habe herauszufinden, ob und wie Tk das kann, mache ich das jetzt in Java... oder JRuby... jedenfalls nicht mit Python ... Strafe muss sein ;)

Stefan
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Hallo sma,
auch auf die Gefahr hin, Deine Selbstkasteiung zu unterbrechen, vielleicht entspricht das Folgende grob Deinen Vorstellungen:

http://paste.pocoo.org/show/142936/

:wink:
yipyip
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Danke yipyip, das geht tatsächlich in die richtige Richtung. Man müsste jetzt noch eine explizite Selektion verwalten... sollte nicht schwer sein.

Aber nun habe ich schon eine Lösung in Java und ich werde mich vielleicht noch mal an einer mit Cappucino und/oder Flex zusammen mit AIR versuchen, einfach weil's geht und interessant klingt. Mit Python & GUIs werde ich glaube ich nicht warm. Swing und Flex kenne ich wenigstens schon und Cocoa- (bzw. Cappucino-) Programmierung wollte ich eh schon immer mal lernen.

Stefan
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Eine Selektion ist ja schon rudimentaer vorhanden.
Klickt man auf ein Textwidget, so wird die entsprechende Zahl
auf der Konsole ausgeben.
:wink:
yipyip
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Habe ich gesehen. Daher sagte ich ja "sollte nicht schwer sein". Doch Tk ist hässlich, braucht bei meiner MacPorts-Version von Python immer einen X-Server und ist hässlich. Hatte ich schon erwähnt, dass das UI fremdartig unter OS/X aussieht? Und hässlich?

Ich hätte halt gedacht, die Zeiten, wo eine Listbox nur fest verdrahtet einen String anzeigen kann, wären mit Windows 95 oder so gestorben.

Swing stammt von 1997 oder so (und basiert auf Ideen von VisualWorks Smalltalk von 1994, was auf ObjectWorks basiert, was aus den frühen 90er oder späten 80ern sein müsste und auf Smalltalk-80 basiert, was 1986 produktifiziert wurde) und konnte bereits Listen mit beliebigen Komponenten anzeigen. Irgendwie habe ich immer wieder das Gefühl, UIs entwickeln sich rückwärts und irgendwann preisen wir alle wieder die 80x24-Konsole oder noch besser den Teletype-Fernschreiber.

Stefan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

sma hat geschrieben:Mit Python & GUIs werde ich glaube ich nicht warm.
Naja, wenn du auch Tk nutzt... wenn ich das so angehen würde, dann müsste ich auch sagen dass ich mit "Python & GUIs" nicht warm werde, weil Tk einfach World of Pain ist.

Hint: Modernes GUI-Toolkit nutzen. Für dich bietet sich auf dem Mac OS X Qt an - das hatte ich letztens in der Arbeit ausprobiert und ist gar nicht mal so übel. Im Gegensatz zu Tk fühlt es sich immerhin robust an.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Bin nun wahrlich kein Tkinter Zelot, aber das Tk(inter) eine 'World of Pain' ist, kann ich beim besten Willen nicht nachvollziehen. In Tkinter zu programmieren ist doch Fun pur. Kaum ist der Editor geoeffnet, kann man sich kaum dagegen wehren, schnell eine Tkinter-Gui zu schreiben...

- Tkinter funktioniert *einfach*.
- Tkinter *funktioniert* einfach.

Und seit mit Tk8.5 die Fonts antialiased sind, finde ich Tkinter auch nicht mehr haesslich.

:wink:
yipyip
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Eben nicht: enable/disable funktioniert keineswegs einfach, Locken der GUI bei Modalen Dialogen tut nicht, sieht unter Windows und Linux auch mit ttk noch relativ hässlich auch, weil ttk nichtmal alle Widgets styled (und selbst wenn dann ist der GTK+-Stil erstens komisch, so komisch wie das GTK-LookAndFeel von Java und zweitens fürchterlich langsam). TkTable ist ebenfalls hässlich und seltsam, da würde man sich auch ein anständiges Widget wünschen.

Achja, die File-Dialoge sind unter Linux direkt noch schlechter als die von GTK+, man kann keine Selection über mehr als eine Dateiendung machen und das Auswählen von Ordnern ist dermaßen unintuitiv, dass ich vermute dass die Kunden das schlichtweg nicht auf die Reihe bekommen.

Und dann mache ich Qt Designer oder Glade auf und baue mir meine GUI visuell zusammen und bin fast fertig, zudem bekomme ich eine UI-Definitionsdatei die ich in jeder Sprache nutzen kann.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ohweh, das entwickelt sich wieder in Richtung einer leidigen "Welches ist das beste GUI-Toolkit"-Diskussion. Davon gab es für meinen Geschmack schon (mehr als) genug im Forum.

Letztlich hat es doch mit vielen Rahmenbedingungen zu tun, wie man Tkinter bewertet. Dass es optisch und hinsichtlich der Vielzahl und Komplexität mancher Widgets mit den anderen Toolkits (trotz der Verbesserungen seit Python 3.1) nicht mithalten kann, keine Frage.

Aber wenn es darum geht, einen ersten Einstieg in die GUI-Programmierung mit Python zu finden, wenn es nur kleine Applikationen sind, die im wesentlichen für den Eigengebrauch oder wenig darüber hinaus gedacht sind, dann ist Tkinter prima und gehört zudem noch zu den "batteries included". Auch für den schulischen Bereich ist Tkinter gut, weil man z.B. ganz ohne Bruch von (x)turtle/frog zu Tkinter kommt und die Schüler auch zu Hause damit arbeiten können, ohne vor dem Problem zu stehen, ein zusätzliches Toolkit installieren zu müssen (da ich ahne, dass zumindest der letzte Satz Widerspruch ernten wird: Für viele Schüler IST das ein Problem!)
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Nee, kein Flamewar... dafuer bin ich eh' zu alt...
Fuer die meisten Zwecke reicht mir Tkinter.

Aber Leonidas bringt mich bald so weit, PyQt ernstaft zu evaluieren...

:wink:
yipyip
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

yipyip hat geschrieben:Aber Leonidas bringt mich bald soweit, PyQt ernstaft zu evaluieren...
Lustig, lustig, und dabei bin ich doch der der sich normalerweise eher für PyGTK ausspricht ;)

So, Thema Flamewar vom Tisch! Now for something completely different...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten