Форум сайта python.su
Здравствуйте. Пишу небольшую прогу с графическим интерфейсом. Сколько не искал нормальной документации по pygtk не нашел( на английском крайне туго идет(
Как к форме прикрутить кнопку по нажатию на которую текст из формы будет занесен в определенную переменную. или несколько форм к одной кнопке, не могу с этим разобраться( нет ли где описания функционала pygtk?
Офлайн
благодарю всех кто за целый день так ничего и не ответил, разобрался сам на примере кучки исходников…дохлый форум о живом языке…
Отредактировано (Май 26, 2011 00:10:52)
Офлайн
button.connect(“clicked”, “здесь название функции которая прочитает данные и сохранит в переменную” ,“здесь данные которые нужно сохранить”)
button.connect(“clicked”,myfunction,data)
http://pygtk.org/pygtk2tutorial/ch-ButtonWidget.html
можно перевод в яндексе или в гугле
соответственно функция
button.connect(“clicked”,myfunction,data)
def myfunction(button, data):
myvar = data
если data это entry:
myvar = data.get_text() или button.connect(“clicked”,myfunction, entry.get_text())
Отредактировано (Май 27, 2011 08:38:08)
Офлайн
да я уже разобрался)
Офлайн
теперь с treeview мучаюсь)
Офлайн
DarkVortexНичего сложного на самом деле нет. Вот пример treeview:
теперь с treeview мучаюсь)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gtk
class GUI:
# обработчик закрытия приложения
def delete_event(self, widget, event, data = None):
gtk.main_quit()
def __init__(self):
# создаем главное окно
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_size_request(300,300)
# присоединяем обработчик события "закрытие окна"
self.window.connect("delete_event", self.delete_event)
# создаем упаковщик
self.vbox = gtk.VBox()
# помещаем его в главное окно
self.window.add(self.vbox)
# создаем кнопку
self.btn = gtk.Button("Заполнить")
self.btn.connect("clicked",self.add_to_model)
# помещаем кнопку в упаковку
self.vbox.pack_start(self.btn)
# создаем модель на два столбца с типом string
self.model = gtk.ListStore(str, str)
# создаем treeview с этой моделью
self.treeview = gtk.TreeView(model = self.model)
# добавляем его в упаковку
self.vbox.pack_start(self.treeview)
# создаем колонки для таблицы
self.renderer = gtk.CellRendererText()
self.column0 = gtk.TreeViewColumn("Столбец 1", self.renderer, text=0)
self.column1 = gtk.TreeViewColumn("Столбец 2", self.renderer, text=1)
self.column0.set_expand(True)
self.column1.set_expand(True)
self.treeview.append_column(self.column0)
self.treeview.append_column(self.column1)
# показываем главное окно
self.window.show_all()
# обрабатывает клик по кнопке "Заполнить"
def add_to_model(self, widget, data = None):
# генерируем какие-нибудь значения для таблицы
for i in range(10):
val1 = "#%s" % i
val2 = "Значение%s" % i
# вставляем данные в модель
self.model.append([val1,val2])
if __name__ == "__main__":
app = GUI()
gtk.main()
Отредактировано (Май 28, 2011 13:17:42)
Офлайн
пару дней назад и с этим разобрался) теперь с несколькими окнами мучаюсь( когда закрываю второстепенное окно, и открываю его снова оно пустое( как тут быть?
Офлайн
может есть кто ответит на всю мою кучу вопросов напишите пожалуйста в асю: 92141814
Офлайн
ковырял исходники pygmy понял что к сигналу delete-event надо привязать функцию со скрытием окна self.msg_window.hide(). Но когда вызываю self.msg_window.show() окно уже пустое(
Офлайн
В общем пишу я почтовый клиент, в питоне можно сказать любитель. организовываю все в 3 класса smtp - отправка почты, pop - получение почты и gui - весь интерфейс который работает с 2 другими классами. или лучше под каждое окно сделать свой класс? и еще все виджеты лучше запихать в один файл или несколько файлов делать, в каждом по окну…мне почемуто кажется второй вариант…думаю и проблема исчезнет(ушел эксперементировать)
———
пустое окно и хоть ты расшибись(
———
толи лыжи неедут толи я не понял как работает этот гтк
Отредактировано (Май 30, 2011 14:50:12)
Офлайн