为什么在加载我的gtk应用程序时自动选择第一个工具栏按钮?

为什么在加载我的gtk应用程序时自动选择第一个工具栏按钮?,gtk,pygtk,glade,Gtk,Pygtk,Glade,当我的gtk应用程序加载时,工具栏上的第一个项目会自动选中,它会高亮显示,当它按enter键时会被按下。这只是一个小问题,但我希望默认情况下不选择任何内容 以下是一些基本示例代码: import gtk import gtk.glade window_tree = gtk.glade.XML('testtoolbar.glade') gtk.main() 林间空地 <?xml version="1.0"?> <glade-interface> <!-- i

当我的gtk应用程序加载时,工具栏上的第一个项目会自动选中,它会高亮显示,当它按enter键时会被按下。这只是一个小问题,但我希望默认情况下不选择任何内容

以下是一些基本示例代码:

import gtk
import gtk.glade

window_tree = gtk.glade.XML('testtoolbar.glade')

gtk.main()
林间空地

<?xml version="1.0"?>
<glade-interface>
  <!-- interface-requires gtk+ 2.16 -->
  <!-- interface-naming-policy project-wide -->
  <widget class="GtkWindow" id="window1">
    <property name="width_request">200</property>
    <property name="visible">True</property>
    <child>
      <widget class="GtkToolbar" id="toolbar1">
        <property name="visible">True</property>
        <child>
          <widget class="GtkToolButton" id="toolbutton1">
            <property name="visible">True</property>
            <property name="label" translatable="yes">toolbutton1</property>
            <property name="use_underline">True</property>
            <property name="stock_id">gtk-new</property>
          </widget>
          <packing>
            <property name="expand">False</property>
            <property name="homogeneous">True</property>
          </packing>
        </child>
        <child>
          <widget class="GtkToolButton" id="toolbutton2">
            <property name="visible">True</property>
            <property name="label" translatable="yes">toolbutton2</property>
            <property name="use_underline">True</property>
            <property name="stock_id">gtk-open</property>
          </widget>
          <packing>
            <property name="expand">False</property>
            <property name="homogeneous">True</property>
          </packing>
        </child>
      </widget>
    </child>
  </widget>
</glade-interface>

这可能只是GTK+将焦点交给某个小部件,如果可能的话,它喜欢让小部件聚焦


您可以使用将焦点移动到其他位置,以获得所需的行为。如果工具栏是您所有的widgetry,那么可能很难找到合适的焦点目标。

这可能只是GTK+将焦点交给某个小部件,如果可能的话,它喜欢让小部件聚焦


您可以使用将焦点移动到其他位置,以获得所需的行为。如果工具栏是您所有的widgetry,那么可能很难找到合适的焦点目标。

您始终可以添加一个小部件,使其不可见,并将焦点转移到它。虽然我并不认为这是一个问题,也不知道还有谁会这样做。

你可以添加一个小部件,使其不可见,并将焦点转移到它上。虽然我并不认为这是一个问题,也不知道还有谁会这样做。

它有焦点,因为它是你应用程序中的第一个小部件。如果您使用glade,您可以将任何其他小部件的Has focus设置为“Yes”,工具栏将在启动时自动失去焦点。

它有焦点,因为它是应用程序中的第一个小部件。如果您使用glade,您可以将任何其他小部件的Has focus设置为“Yes”,工具栏将在启动时自动失去焦点。

gtk.ToolButton继承gtk.Bin

Bin是一个抽象基类,它定义了一个小部件,这个小部件是一个只有一个子元素的容器

所以button是一个容器

btn.set\u can\u focusFalse 这是行不通的。 你需要

btn.set\u focus\u chain[] 或者对于工具栏中的每个按钮

toolbar.foreachlambda x:x.set\u focus\u chain[]
gtk.ToolButton继承gtk.Bin

Bin是一个抽象基类,它定义了一个小部件,这个小部件是一个只有一个子元素的容器

所以button是一个容器

btn.set\u can\u focusFalse 这是行不通的。 你需要

btn.set\u focus\u chain[] 或者对于工具栏中的每个按钮

toolbar.foreachlambda x:x.set\u focus\u chain[]