Форум сайта python.su
Занялся недавно построением интерфейса на Gtk.
Вопрос вот в чем - существует ли такое свойство для виджета Entry как ширина(или длина, как хотите)?
Офлайн
entry.set_size_request
а вообще-то поставь glade и смотри сишный код, догадаться что gtk_widget_set_size_request (entry1, 100, 20) в С == entry1.set_size_request (100,20) не так уж и сложно
Офлайн
Еще вопрос в догонку - можно ли используя entry.set_text(x) вместо x использовать переменную? Исходя из мануала, то нельзя. Может есть функция которая непосредственно делает то что нужно…
Офлайн
как это нельзя%)
Офлайн
Просто не получается, что бы заработала такая конструкция:
...
x = "entry"
entry.set_text(x)
...
Офлайн
ну полностью давай код, потыкаем
Офлайн
import pygtk
pygtk.require('2.0')
import gtk
class Pref:
def __init__(self):
def ok():
print “Ok”
def Apply():
print “Apply”
def changed(entry):
Entry.set_text(entry)
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_title(“Main - Inventar v0.1”)
table_pref = gtk.Table(rows=2, columns=3)
window.add(table_pref)
Entry=gtk.Entry()
combo = gtk.combo_box_entry_new_text()
window.add(combo)
combo.append_text('1')
combo.append_text('2')
combo.child.connect('changed', changed)
combo.set_active(0)
table_pref.attach(combo, 0, 1, 0, 1)
table_pref.attach(Entry, 1, 2, 0, 1)
Entry.show()
table_pref.show()
combo.show()
frame_prefDB = gtk.Frame()
table_pref.attach(frame_prefDB, 0, 1, 0, 1)
frame_prefDB.show()
frame_newDB = gtk.Frame()
table_pref.attach(frame_newDB,1, 2, 0, 1)
frame_newDB.show()
frame_user = gtk.Frame()
table_pref.attach(frame_user, 2, 3, 0, 1)
frame_user.show()
Hbox = gtk.HBox(spacing=10)
table_pref.attach(Hbox, 0, 3, 1, 2)
but_ok = gtk.Button(“Ok”)
but_ok.connect(“clicked”, ok)
but_clear = gtk.Button(“Apply”)
but_clear.connect(“clicked”, Apply)
but_cancel = gtk.Button(“Cancel”)
#but_cancel.connect(“clicked”, cancel)
Hbox.pack_start(but_ok)
Hbox.pack_start(but_clear)
Hbox.pack_start(but_cancel)
but_ok.show()
but_clear.show()
but_cancel.show()
Hbox.show()
table_pref.show()
window.show()
def main():
gtk.main()
return 0
if __name__ == “__main__”:
Pref()
main()
В скрипте нужно чтобы при выборе пункта в combobox'е текст должен отображаться в соседнем Entry
Отредактировано (Сен. 11, 2006 15:42:09)
Офлайн
)ну ёпт, смотрим какую ошибку выдаёт:
File “G:\1.py”, line 13, in changed
Entry.set_text(entry)
TypeError: GtkEntry.set_text() argument 1 must be string, not gtk.Entry
и?) а ты передаёшь виджет, объект) а надо? а как сделать?
а наверн овот так:
def changed(entry):
Entry.set_text(entry.get_text())
в этом и вся прелесть в интерпретируемых языках, что они выводят много инфы об ошибке, а не тупо молча падают)
Офлайн
и смотри побольше examples и pygtk tutorial + pygtk faq и всё=( ничё больше нет, и при этом gtk “класическая гуи либа”, я вот парился как в табе кнопку закрыть присобачить и текст с картинкой и чтоб не через жопу, нашёл только в факе)
Офлайн