GTK:如何在开始时从元素中移除焦点

GTK:如何在开始时从元素中移除焦点,gtk,Gtk,我在一个应用程序中添加了两个GtkEntry,现在当我启动应用程序时,其中一个已经有焦点,看起来可以编辑了。Dot不希望在开始时将焦点放在任何元素上,也不希望任何文本输入元素具有焦点或正在编辑。我只想让他们显示他们的文本,然后如果用户想更改他们,他单击/制表符,输入文本,然后单击enter,它会返回到相同的状态。(没有突出显示,或者其他任何内容)在初始化窗口后,对任何喜欢的小部件使用Gtk.Widget的grab_focus()方法使用Gtk.Widget的grab_focus()在初始化窗口后

我在一个应用程序中添加了两个GtkEntry,现在当我启动应用程序时,其中一个已经有焦点,看起来可以编辑了。Dot不希望在开始时将焦点放在任何元素上,也不希望任何文本输入元素具有焦点或正在编辑。我只想让他们显示他们的文本,然后如果用户想更改他们,他单击/制表符,输入文本,然后单击enter,它会返回到相同的状态。(没有突出显示,或者其他任何内容)

在初始化窗口后,对任何喜欢的小部件使用Gtk.Widget的grab_focus()方法使用Gtk.Widget的grab_focus()在初始化窗口后,在任何您喜欢的小部件上使用的方法。在第一个条目中,我遇到了相同的问题。 我的解决方案是添加一个虚拟条目作为第一个条目并将其隐藏,因此尽管它获得了焦点,但它是不可见的:

self.v1 = Gtk.VBox()
self.dummy_field = Gtk.Entry()  # workaround for focus of first entry
self.entry1 = Gtk.Entry('1')
self.entry2 = Gtk.Entry('2')

self.v1.pack_start(self.dummy_field, False, False, 0)
self.v1.pack_start(self.entry1, False, False, 0)
self.v1.pack_start(self.entry2, False, False, 0)

...
...

self.window.add(self.v1)
self.window.show_all()
self.dummy_field.hide() # dummy entry is hidden
Gtk.main()


我在第一次参赛时也遇到了同样的问题。 我的解决方案是添加一个虚拟条目作为第一个条目并将其隐藏,因此尽管它获得了焦点,但它是不可见的:

self.v1 = Gtk.VBox()
self.dummy_field = Gtk.Entry()  # workaround for focus of first entry
self.entry1 = Gtk.Entry('1')
self.entry2 = Gtk.Entry('2')

self.v1.pack_start(self.dummy_field, False, False, 0)
self.v1.pack_start(self.entry1, False, False, 0)
self.v1.pack_start(self.entry2, False, False, 0)

...
...

self.window.add(self.v1)
self.window.show_all()
self.dummy_field.hide() # dummy entry is hidden
Gtk.main()


这是我尝试的第一件事,但没有成功。我会再试一次。。。还是不行。第一个GTKntry是集中的。是否有一种方法可以手动“制表”,就像键盘制表符被按下一样。我可以做足够多的时间去做别的事情。不幸的是,当我手动使用选项卡时,最后一个GtkEntry有一个突出显示的条目。也许我可以制作一个不可见的GtkEntry并使用它?因此,隐藏的(很遗憾,不是100%)GtkEntry可以工作,但最后一个总是高亮显示(不聚焦,但好像一次shift选择文本。可以手动删除它,但;/Gtk的行为方式很奇怪;/类似的问题:您是否尝试过设置_属性(“can-focus”,True)在一个小部件上,你希望有初始焦点,因为文档说默认值为False是的,这似乎有点帮助。我注意到的是,最后一个GtkEntry在tab后似乎保持高亮状态。因此,当我点击tab N次,有N