Мне нужна помощь в выборе и печати текста в ПЫГТК - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь создать программу, похожую на приведенную ниже.

Изображение

У меня этот файл называется Tux image.png, и у меня есть еще один файл с именем File to use.txt, который выглядит следующим образом

Microsoft яблоко HP Dell Linux Blackberry

Мне нужно, чтобы программа выглядела так, как показано выше, выбрав слово Linux и напечатав его под изображением. Вот код, который у меня сейчас есть.

# 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( )

Мне нужна только помощь с импортом документа и печатью имени внизу

Ответы [ 2 ]

0 голосов
/ 11 мая 2011

У вас есть 2 варианта:
1- Загрузите файл изображения в Pixbuff, нарисуйте на нем текст и покажите его в окне, это трудный путь.
2- Добавьте gtk.Fixedв окно и добавьте gtk.Image (загруженный из файла) и gtk.Label (включая текст) к этому виджету gtk.Fixed, учитывая конкретное расположение для текста (например, x = 300, y = 750 здесь).Как то так:

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()
0 голосов
/ 10 мая 2011

Я не уверен, что вам нужно, но вы можете прочитать файл use.txt следующим образом:

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

'file_content' должен теперь содержать:

Microsoft Apple HP Dell Linux Blackberry

Выможно разделить их в списке:

choices = file_content.split()

После этого вы можете использовать gtk.ComboBox для отображения комбинированного списка с вариантами выбора.

Все еще не уверены, что это то, что вам нужно.

РЕДАКТИРОВАНИЕ:

Добавление комбо и метки:

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()
...