DVA Assignment 4
DVA Assignment 4
2. grid():
o Organizes widgets in rows and columns (table-like).
3. place():
o Uses absolute positioning (x, y coordinates).
Comparison:
Simple
pack() High Low
layouts
Medium- Structured
grid() Medium
High forms
Custom
place() Low High
layouts
Input Dialogs:
o simpledialog.askstring(), askinteger(): Prompt user for input.
Example:
python
CopyEdit
from tkinter import messagebox
messagebox.showinfo("Success", "Record added successfully!")
Menus and dialog boxes enhance interactivity, usability, and professionalism in
applications.
def insert_record():
name = entry_name.get()
grade = entry_grade.get()
conn = sqlite3.connect("students.db")
cursor = conn.cursor()
cursor.execute("INSERT INTO Students (Name, Grade) VALUES (?, ?)", (name,
grade))
conn.commit()
conn.close()
messagebox.showinfo("Success", "Student record inserted.")
# GUI
root = tk.Tk()
root.title("Student Entry")
tk.Label(root, text="Name").pack()
entry_name = tk.Entry(root)
entry_name.pack()
tk.Label(root, text="Grade").pack()
entry_grade = tk.Entry(root)
entry_grade.pack()
root.mainloop()
This app allows user input for Name and Grade, inserts the data into the
“Students” table, and displays a confirmation on success.
7. Tkinter Interface to Display and Delete Records
Answer (Code Example):
python
CopyEdit
import tkinter as tk
from tkinter import messagebox
import sqlite3
def load_records():
listbox.delete(0, tk.END)
conn = sqlite3.connect("students.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM Students")
for row in cursor.fetchall():
listbox.insert(tk.END, f"{row[0]} - {row[1]} - {row[2]}")
conn.close()
def delete_record():
selected = listbox.get(tk.ACTIVE)
if selected:
student_id = selected.split(" - ")[0]
conn = sqlite3.connect("students.db")
cursor = conn.cursor()
cursor.execute("DELETE FROM Students WHERE ID=?", (student_id,))
conn.commit()
conn.close()
load_records()
messagebox.showinfo("Deleted", "Record deleted successfully.")
# GUI
root = tk.Tk()
root.title("View & Delete Students")
load_records()
root.mainloop()