python - Gtk3 Python - 永久可见的 SearchBar

标签 python gtk3 searchbar

我正在尝试创建一个带有永久可见搜索栏的小型应用程序。 Gtk.SearchEntry 的当前实现是当您按下 Esc 时搜索栏从窗口中消失。我通过添加 on_key_release 事件处理程序在以下 MWA 中工作,但它让我很烦,当您按 Esc 时,搜索栏会闪烁一段时间瞬间又重新出现。只要您按住 Esc,它实际上就会保持不可见状态。

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk


class AppWindow(Gtk.ApplicationWindow):
    def __init__(self):
        super(AppWindow, self).__init__()
        self.grid = Gtk.Grid()
        self.add(self.grid)
        self.searchbar = Gtk.SearchBar()
        self.grid.attach(self.searchbar, 1, 1, 1, 1)
        if not self.searchbar.get_search_mode():
            self.searchbar.set_search_mode(True)

        self.searchentry = Gtk.SearchEntry()
        self.searchbar.connect_entry(self.searchentry)
        self.searchbar.add(self.searchentry)
        self.searchbar.set_show_close_button(False)
        self.connect("key-release-event", self._on_key_release)

    def _on_key_release(self, widget, event):
        keyname = Gdk.keyval_name(event.keyval)
        if keyname == 'Escape':
            self.searchbar.set_visible(True)
            self.searchbar.set_search_mode(True)
        if event.state and Gdk.ModifierType.CONTROL_MASK:
            if keyname == 'f':
                self.searchbar.set_search_mode(True)


class Application(Gtk.Application):
    def __init__(self):
        super(Application, self).__init__()

    def do_activate(self):
        self.win = AppWindow()
        self.win.show()
        self.win.connect("delete-event", Gtk.main_quit)
        self.win.show_all()

        Gtk.main()

if __name__ == '__main__':
    app = Application()
    app.run()

有没有可能我不让整个搜索栏闪烁,而是只看到当前搜索文本消失而没有任何闪烁?

最佳答案

如果您希望搜索条目始终可见,请停止使用 SearchBar。只需将 SearchEntry 直接添加到您的容器即可。

class AppWindow(Gtk.ApplicationWindow):
    def __init__(self):
        super(AppWindow, self).__init__()
        self.grid = Gtk.Grid()
        self.add(self.grid)

        self.searchentry = Gtk.SearchEntry()
        self.grid.attach(self.searchentry, 1, 1, 1, 1)
        self.connect("key-release-event", self._on_key_release)}

您可能需要设置一些边距或间距以获得适合您的外观。

关于python - Gtk3 Python - 永久可见的 SearchBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40685618/

相关文章:

javascript - 我正在尝试制作一个搜索栏的动画,该搜索栏在单击时滑动打开,而导航栏消失反之亦然

python - 如何在Python中的数据框中将日期时间舍入为十分钟日期时间

python - 如何使用 Python 在 Gtk3 中显示 png 图像?

c - 除非光标位于滚动条上方,否则 GtkScrolledWindow 不响应鼠标滚轮

ios - 在搜索栏的左侧和右侧添加按钮

swift - didSelectRowAt 在使用 searchBar 时记住第一个元素(indexPath)

python - 从Python中的文本文件中读取数字

python - 如何在 python 中获取多个正则表达式匹配项?

Python 3.3 蓝图

Python Gtk3 条目设置占位符文本