Ich versuche eine kleine Anwendung mit einer dauerhaft sichtbaren Suchleiste zu haben. Die aktuelle Implementierung von Gtk.SearchEntry
ist, dass die Suchleiste aus dem Fenster verschwindet, wenn Sie Esc
drücken. Ich habe es funktioniert in der folgenden MWA durch Hinzufügen eines on_key_release
-Event Handler, aber es ist nagging mich, dass, wenn Sie Esc
drücken, wird die Suchleiste für einen Moment weg blinzeln und dann wieder erscheinen. Es wird tatsächlich unsichtbar bleiben, solange Sie Esc
halten gedrückt.Gtk3 Python - permanent sichtbar SearchBar
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()
Ist es möglich, dass stattdessen die ganze searchbar Zwinkern machen, ich habe nur die aktuellen Such-Text sehen gehen weg ohne blinken?
Funktioniert perfekt! – oschoudhury