Никак не могу понять, как вызвать функцию из класса? У меня в проекте 2 файла: один описывает клас прорисовки окна, второй собственно вызывает этот класс, который так же в последствии должен передать окну некоторое событие, которые будет выполняться в ходе программы.
При запуске программы окно рисуется, однако вызов функции класса, которая изменяет метку в окне, вызывается только после закрытия окна.
Исходник основного файла (client.py):
Код: Выделить всё
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import gui_inform
gui = gui_inform.Gui_inform()
gui.main()
gui.showLabel(1, True)
"""
Выполняем какое то действие, получаем результат операции,
который передаем в следующую функцию в качестве второго параметра
(по умолчсанию True)
"""
gui.showLabel(2, True)Исходник второго файла (gui_inform.py):
Код:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pygtk
pygtk.require('2.0')
import gtk
class Gui_inform:
label1 = gtk.Label()
label2 = gtk.Label()
def delete_event(self, widget, event, data=None):
gtk.main_quit()
return False
def destroy(self, widget, data=None):
gtk.main_quit()
return False
def showLabel(self, lab_num, success=True):
if lab_num == 1:
self.label1.set_label('Идет подготовка данных . . . . . . .')
self.label1.show()
print "event 1"
elif lab_num == 2:
if success:
self.label2.set_label('ОК')
print "event 2 true"
else:
self.label2.set_label('Ошибка')
print "event 2 false"
self.label2.show()
def __init__(self):
self.initWindow()
def initWindow(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_size_request(300, 100)
self.window.set_resizable(False)
self.window.set_title("Информатор")
self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy)
self.window.set_border_width(10)
self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS)
hbox = gtk.HBox(False, 2)
vbox1 = gtk.VBox(True, 5)
self.label1.set_alignment(0, 0)
vbox1.pack_start(self.label1, True, True, 2)
self.label1.show()
hbox.pack_start(vbox1, True, True, 2)
vbox1.show()
vbox2 = gtk.VBox(True, 5)
self.label2.set_alignment(0, 0)
vbox2.pack_start(self.label2, True, True, 2)
self.label2.show()
hbox.pack_start(vbox2, True, True, 2)
vbox2.show()
self.window.add(hbox)
hbox.show()
self.window.show()
def main(self):
gtk.main()Результат работы: пустое окно и по завершении в консоли
Код: Выделить всё
event 1
event 2 trueПодскажите, как это правильно реализовать?
Спасибо всем отозвавшимся!