import tkinter as tk
from tkinter import ttk
import xml.etree.ElementTree as ET
# Fungsi untuk memuat dan mencari data dari XML
def search_data():
query = search_entry.get().lower()
# Hapus data lama di tabel sebelum menampilkan hasil baru
for row in tree.get_children():
tree.delete(row)
try:
# Load file XML (Ganti 'data.xml' dengan nama file Anda)
tree_xml = ET.parse('data2.xml')
root = tree_xml.getroot()
for item in root.findall('item'):
# Ambil data dari tag XML (sesuaikan nama tag dengan file Anda)
name = item.find('name').text
category = item.find('category').text
price = item.find('price').text
# Filter berdasarkan input pencarian
if query in name.lower() or query in category.lower():
tree.insert("", "end", values=(name, category, price))
except FileNotFoundError:
print("Error: File 'data.xml' tidak ditemukan.")
# --- Setup GUI ---
root = tk.Tk()
root.title("Pencarian Data XML")
root.geometry("600x400")
# 1. Kotak Input Pencarian
search_frame = tk.Frame(root)
search_frame.pack(pady=10)
tk.Label(search_frame, text="Cari:").pack(side=tk.LEFT, padx=5)
search_entry = tk.Entry(search_frame, width=30)
search_entry.pack(side=tk.LEFT, padx=5)
# Tombol Search
search_btn = tk.Button(search_frame, text="Cari", command=search_data)
search_btn.pack(side=tk.LEFT)
# 2. Tabel Data (Treeview)
columns = ("Name", "Category", "Price")
tree = ttk.Treeview(root, columns=columns, show="headings")
# Definisi Header Tabel
for col in columns:
tree.heading(col, text=col)
tree.column(col, width=150)
tree.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
# Jalankan fungsi pencarian pertama kali untuk memuat semua data
search_data()
root.mainloop()
==============================
data2.xml
<?xml version="1.0"?>
<root>
<item>
<name>Laptop</name>
<category>Electronics</category>
<price>1200</price>
</item>
<item>
<name>Mouse</name>
<category>Electronics</category>
<price>100</price>
</item>
<item>
<name>Speaker</name>
<category>Electronics</category>
<price>120</price>
</item>
<item>
<name>Flasdisk</name>
<category>Electronics</category>
<price>10</price>
</item>
<item>
<name>Keyboard</name>
<category>Electronics</category>
<price>120</price>
</item>
</root>
Tidak ada komentar:
Posting Komentar