我正在尝试使用笔记本和一些页面设置窗口。在页面中,将有一些条目(参见示例代码)。
我想自己处理Tab键和箭头键。我不希望向上箭头键跳转到页面标题,我不希望箭头左/右键循环浏览页面。我不希望tab键循环显示条目。
连接到按键信号并检查标签或箭头键确实不起作用。
我尝试更改焦点链,但它仍然专注于页面标题或使用左/右箭头循环显示页面。
非常感谢任何帮助/想法。
#!/usr/bin/env python
import pygtk
import gtk
class NotebookExample:
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_size_request(200,200)
notebook = gtk.Notebook()
notebook.set_tab_pos(gtk.POS_TOP)
notebook.show()
hbox1 = gtk.HBox()
notebook.append_page(hbox1, gtk.Label("Page1"))
hbox2 = gtk.HBox()
notebook.append_page(hbox2, gtk.Label("Page2"))
window.add(notebook)
entry1 = gtk.Entry()
entry2 = gtk.Entry()
entry3 = gtk.Entry()
entry1.set_width_chars(5)
entry2.set_width_chars(5)
entry3.set_width_chars(5)
hbox1.pack_start(entry1, False, False, 10)
hbox1.pack_start(entry2, False, False, 10)
hbox1.pack_start(entry3, False, False, 10)
hbox1.set_focus_chain([entry2, entry3])
window.show_all()
def main():
gtk.main()
return 0
if __name__ == "__main__":
NotebookExample()
main()
答案 0 :(得分:0)
找到它。
收听按键事件并返回" True以阻止为该事件调用其他处理程序。错误地进一步传播事件。
window.connect("key-press-event", self.do_key_press)
def do_key_press(self, widget, event):
if gtk.gdk.keyval_name(event.keyval) == 'Tab':
print "tab"
return True
if gtk.gdk.keyval_name(event.keyval) == 'Left' or gtk.gdk.keyval_name(event.keyval) == 'Right':
print "cursor"
return True
return