【问题标题】:Can't type using keybord in GtkTreeView Editable row (But Can right click + paste)无法在 Gtk TreeView 可编辑行中使用键盘输入(但可以右键单击 + 粘贴)
【发布时间】:2016-08-25 21:07:09
【问题描述】:

我在 C 中使用 Gtk3 时遇到了一个奇怪的问题:

我有一个包含 2 列(均为 TEXT)的 GTKTreeView,我在其上添加(动态)单行:
该行的第二列是“可编辑”(使用林间空地)。
我可以双击触发编辑模式的单元格:背景变为白色,并出现一个光标。
但是,我无法使用键盘在 CELL 中输入内容:鼠标似乎可以工作(我可以毫无问题地粘贴到单元格中)。

TreeView 本身已打开“CAN_FOCUS”标志。
我在这里想念什么?

【问题讨论】:

    标签: c gtk gtk3


    【解决方案1】:

    以下是一个执行您所描述的小程序(您真的应该发布一个小示例代码来展示您的问题!)。对不起 - 它是在 Python 中的 - 但它对你来说应该足够相似。注意:

    • can_focus这里没有作用(其实大概是默认开启的)
    • 您必须启用正确的渲染器的“可编辑”(我相信您这样做了)
    • 您必须将处理程序连接到渲染器的“已编辑”信号,并自行更新存储。

    上市:

    from gi.repository import Gtk
    
    class MainWindow(Gtk.Window):
        def __init__(self):
            super(MainWindow, self).__init__()
            self.set_size_request(150, 60)
            self.connect("destroy", lambda x: Gtk.main_quit())
    
            store = Gtk.ListStore(str, str)
            view = Gtk.TreeView(model = store)
    
            for i, hdr in enumerate(("Col1", "Col2")):
                if i == 1:
                    renderer = Gtk.CellRendererText(editable = True)
                    renderer.connect("edited", self.on_edited)
                else:
                    renderer = Gtk.CellRendererText()
                col = Gtk.TreeViewColumn(hdr, renderer, text = i)
                view.append_column(col)
    
            store.append(("One", "Two"))
    
            self.add(view)
            self.show_all()
    
        def on_edited(self, renderer, path, new_text):
            print(" Modify the store here [edited text:  %s]" % new_text)
    
    
        def run(self):
            Gtk.main()
    
    def main(args):
        mainwdw = MainWindow()
        mainwdw.run()
    
        return 0
    
    if __name__ == '__main__':
        import sys
        sys.exit(main(sys.argv))
    

    初始窗口:

    点击col2:

    已编辑:

    从处理程序打印:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      相关资源
      最近更新 更多