Necesito ayuda para elegir e imprimir texto en PYGTK

Estoy intentando hacer un programa que se parezca al que se muestra a continuación.

Imagen

Ese archivo se llama Tux image.png y tengo otro llamado File to use.txt que se ve así

Microsoft Apple HP Dell Linux Blackberry

Necesito hacer que el programa se vea como el de arriba eligiendo la palabra Linux e imprimiéndola debajo de la imagen. Aquí está el código que tengo ahora.

# two underscores
Class tux:
    def __init__(self):
        win = gtk.Window( )
        img  = gtk.Image( )
        img.set_from_file(“Tux image.png”)
        win.add(img)
        win.show_all( )
        win.connect(‘destroy’,gtk.main_quit)


tux( )
gtk.main( )

Solo necesito ayuda para importar el documento e imprimir el nombre en la parte inferior.

preguntado el 10 de mayo de 11 a las 13:05

2 Respuestas

No estoy seguro de lo que necesita, pero puede leer el archivo use.txt así:

fileobj = open("use.txt")
file_content = fileobj.read()

'file_content' ahora debería contener:

Microsoft Apple HP Dell Linux Blackberry

Puede dividirlos en una lista:

choices = file_content.split()

Después de eso, puede usar gtk.ComboBox para mostrar un cuadro combinado con opciones.

Aún no estoy seguro de si esto es lo que quieres.

EDIT:

Añadiendo un combo y una etiqueta:

class Tux(gtk.Window):
    def __init__(self):
        super(Tux, self).__init__()
        combobox = gtk.combo_box_new_text()
        combobox.connect("changed", self.on_changed)
        for choice in choices:
            combobox.append_text(choice)
        self.add(combobox)
        self.label = gtk.Label("No selection")
        self.add(self.label)
        img = gtk.Image( )
        img.set_from_file(“Tux image.png”)
        self.add(img)
        self.connect("destroy", gtk.main_quit)
        self.show_all()

def on_changed(self, widget):
    self.label.set_label(widget.get_active_text())


Tux()
gtk.main()

contestado el 10 de mayo de 11 a las 18:05

Necesito elegir e imprimir Linux en una etiqueta, ¿sabes cómo hacerlo? Liam Yorkville

@Liam Yorkville: Acabo de editar mi respuesta. No probé el código yo mismo, pero debería darte una idea. - Matic

Tienes opciones de 2:
1- Cargue el archivo de imagen en un Pixbuff, dibuje el texto en él y muéstrelo en la ventana, esa es la manera difícil.
2- Agrega un gtk.Fixed en la ventana y agregue ambos gtk.Image (cargado desde archivo) y gtk.Label (incluido el texto) a eso gtk.Fixed widget, dada la ubicación específica para el texto (por ejemplo, x = 300, y = 750 aquí). Algo como esto:

class TuxWindow(gtk.Window):
    def __init__(self):
        gtk.Window.__init__(self)
        fixed = gtk.Fixed()
        ####
        image = gtk.Image()
        image.set_from_file('Tux image.png')
        fixed.put(image, 0, 0)
        ####
        text = open('use.txt').read()
        label = gtk.Label(text)
        fixed.put(label, 300, 750)
        self.add(fixed)
        fixed.show_all()
        ####
        self.connect('delete-event', lambda w, e: gtk.main_quit())

TuxWindow().present()
gtk.main()

contestado el 11 de mayo de 11 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.