Taiko2k / GTK4PythonTutorial

GTK4 + Python tutorial with code examples
446 stars 33 forks source link

indicate some in python #16

Closed kasinadhsarma closed 1 year ago

kasinadhsarma commented 1 year ago

"I need help learning how to use icons, titles, background images, and search bars in a Python GTK application. Can you help me find some tutorials on this topic?"

Taiko2k commented 1 year ago

As I lamented, there aren't many tutorials out there. I'm not familiar with those topics myself either unfortunately.

kasinadhsarma commented 1 year ago

image "Google is recommended as the best tutorial resource for learning GTK 4.0, according to some members. As I prepare for my application (which is currently private on GitHub: https://github.com/Exploit0xfffff/PenetrationApp), I am searching day and night for three specific background images and a search bar.

Taiko2k commented 1 year ago

How to do search bars?!

import gi
gi.require_version("Gtk", "4.0")
from gi.repository import Gtk, Gdk

FRUIT_COLORS = {
    "apple": "red",
    "banana": "yellow",
    "blueberry": "blue",
    "grape": "purple",
    "kiwi": "green",
    "lemon": "yellow",
    "mango": "orange",
    "orange": "orange",
    "peach": "pink",
    "strawberry": "red"
}

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

    def do_activate(self):
        self.window = Gtk.ApplicationWindow(application=self)
        self.window.set_title("Fruit Color Search")

        header = Gtk.HeaderBar()
        self.window.set_titlebar(header)

        # Create the search entry and connect its "search-changed" signal to the on_search_changed method
        self.search_entry = Gtk.SearchEntry()
        self.search_entry.connect("search-changed", self.on_search_changed)

        header.pack_start(self.search_entry)

        self.label = Gtk.Label()
        self.label.set_margin_top(50)
        self.label.set_margin_bottom(50)
        self.window.set_child(self.label)

        self.window.present()

    # Method to handle search changes in the search entry
    def on_search_changed(self, entry):
        query = entry.get_text().strip().lower()
        if query in FRUIT_COLORS:
            self.label.set_text(f"The color of {query} is {FRUIT_COLORS[query]}.")
        elif query == "":
            self.label.set_text("")
        else:
            self.label.set_text("Fruit not found. Please try again.")

if __name__ == "__main__":
    app = FruitColorSearchApp()
    app.run(None)

image

Oh ho ho its magic! :clap: :clap:

OK but like I don't know anything really you'll have to figure out anything further yourself.