Python Clist -Widget gibt die erwartete Liste nicht zurück, gibt nur den ersten Charakter jedes Elements zurück

StackOverflow https://stackoverflow.com/questions/6801370

Frage

Ich habe ein einfaches Programm geschrieben, um alle nicht versteckten Dateien und Unterverzeichnisse in einem bestimmten Verzeichnis auszudrucken.

Ich versuche jetzt, meinen Code in ein Clist -Widget -Beispiel zu migrieren, das ich bei Google gefunden habe. Abgesehen davon, dass ich einige nicht benötigte Schaltflächen herauszureißen, änderte ich mich nur um den oberen Teil, um meinen Code zu integrieren, und es funktioniert teilweise, außer dass es nur das erste Zeichen jeder Datei und jedes Unterverzeichniss zurückgibt. Also habe ich das erwartet:

Desktop
Downloads
Scripts
textfile.txt
pron.avi

Aber stattdessen verstanden:

D
D
S
t
p

Hier ist das Beispiel mit dem Code, den ich geändert habe (eigentlich nur der erste def)

import gtk, os

class CListExample:
    # this is the part Thraspic changed (other than safe deletions)
    # User clicked the "Add List" button.
    def button_add_clicked(self, data):
        dirList=os.listdir("/usr/bin")
        for item in dirList: 
           if item[0] != '.':
              data.append(item)
        data.sort()
        return


    def __init__(self):
        self.flag = 0
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.set_size_request(250,150)

        window.set_title("GtkCList Example")
        window.connect("destroy", gtk.mainquit)

        vbox = gtk.VBox(gtk.FALSE, 5)
        vbox.set_border_width(0)
        window.add(vbox)
        vbox.show()

        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)

        vbox.pack_start(scrolled_window, gtk.TRUE, gtk.TRUE, 0)
        scrolled_window.show()

        clist = gtk.CList(1)

        # What however is important, is that we set the column widths as
        # they will never be right otherwise. Note that the columns are
        # numbered from 0 and up (to an anynumber of columns).
        clist.set_column_width(0, 150)

        # Add the CList widget to the vertical box and show it.
        scrolled_window.add(clist)
        clist.show()

        hbox = gtk.HBox(gtk.FALSE, 0)
        vbox.pack_start(hbox, gtk.FALSE, gtk.TRUE, 0)
        hbox.show()
        button_add = gtk.Button("Add List")
        hbox.pack_start(button_add, gtk.TRUE, gtk.TRUE, 0)

        # Connect our callbacks to the three buttons
        button_add.connect_object("clicked", self.button_add_clicked,
clist)

        button_add.show()

        # The interface is completely set up so we show the window and
        # enter the gtk_main loop.
        window.show()

def main():
    gtk.mainloop()
    return 0

if __name__ == "__main__":
    CListExample()
    main()
War es hilfreich?

Lösung

Wenn Sie Daten über die Anhangmethode hinzufügen, müssen Sie eine Sequenz übergeben. Schreiben Sie Ihren Code neu:

def button_add_clicked(self, data):
    dirList = os.listdir("/usr/bin")
    for item in dirList: 
       if not item.startswith('.'):
          data.append([item])
    data.sort()

Wenn Sie eine Clist -Instanz erstellen, übergeben Sie an die Konstruktorennummer der Collumns. In Ihrem Beispiel haben Sie mit einem Collumn Clist erstellt. Deshalb sehen Sie nur das erste Element (erstes Zeichen) der bestandenen Sequenz in der Append -Methode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top