Scenario Based Questions in GUI Programming
Scenario Based Questions in GUI Programming
Solution:
import tkinter as tk
from tkinter import messagebox
def login():
username = entry_username.get()
password = entry_password.get()
# Create window
window = tk.Tk()
window.title("Login Form")
window.geometry("300x200")
# Labels
tk.Label(window, text="Username:").pack(pady=5)
entry_username = tk.Entry(window)
entry_username.pack(pady=5)
tk.Label(window, text="Password:").pack(pady=5)
entry_password = tk.Entry(window, show="*")
entry_password.pack(pady=5)
# Login button
btn_login = tk.Button(window, text="Login", command=login)
btn_login.pack(pady=20)
window.mainloop()
5acXjz Uk
Solution:
import tkinter as tk
from tkinter import messagebox
def calculate(operation):
try:
num1 = float(entry_num1.get())
num2 = float(entry_num2.get())
if operation == '+':
result = num1 + num2
elif operation == '-':
result = num1 - num2
elif operation == '*':
result = num1 * num2
elif operation == '/':
if num2 == 0:
raise ValueError("Cannot divide by zero")
result = num1 / num2
lbl_result.config(text=f"Result: {result}")
except ValueError as e:
messagebox.showerror("Error", str(e))
# GUI Setup
window = tk.Tk()
window.title("Simple Calculator")
window.geometry("350x250")
# Operation Buttons
frame = tk.Frame(window)
frame.pack(pady=10)
window.mainloop()
5acXjz Uk
Solution:
import tkinter as tk
from tkinter import messagebox
def add_task():
task = entry_task.get()
if task:
listbox_tasks.insert(tk.END, task)
entry_task.delete(0, tk.END)
else:
messagebox.showwarning("Warning", "Task cannot be empty!")
def delete_task():
try:
selected_task = listbox_tasks.curselection()[0]
listbox_tasks.delete(selected_task)
except IndexError:
messagebox.showwarning("Warning", "Please select a task to
delete.")
# GUI Setup
window = tk.Tk()
window.title("To-Do List")
window.geometry("300x400")
window.mainloop()
Solution:
import tkinter as tk
def convert_temp():
try:
temp = float(entry_temp.get())
if var.get() == 1:
result = (temp * 9/5) + 32
lbl_result.config(text=f"{temp}°C = {result:.2f}°F")
else:
result = (temp - 32) * 5/9
5acXjz Uk
lbl_result.config(text=f"{temp}°F = {result:.2f}°C")
except ValueError:
lbl_result.config(text="Invalid input! Please enter a number.")
# GUI Setup
window = tk.Tk()
window.title("Temperature Converter")
window.geometry("350x200")
var = tk.IntVar(value=1)
tk.Radiobutton(window, text="Celsius to Fahrenheit", variable=var,
value=1).pack()
tk.Radiobutton(window, text="Fahrenheit to Celsius", variable=var,
value=2).pack()
window.mainloop()
Where:
P = Principal amount
R = Rate of interest
T = Time in years
Solution:
import tkinter as tk
def calculate_si():
try:
p = float(entry_p.get())
r = float(entry_r.get())
t = float(entry_t.get())
si = (p * r * t) / 100
lbl_result.config(text=f"Simple Interest: ₹{si:.2f}")
except ValueError:
lbl_result.config(text="Invalid Input")
# GUI Setup
window = tk.Tk()
window.title("Simple Interest Calculator")
5acXjz Uk
tk.Label(window, text="Principal (₹)").pack()
entry_p = tk.Entry(window)
entry_p.pack()
window.mainloop()
Solution:
import tkinter as tk
def convert_currency():
try:
usd = float(entry_usd.get())
inr = usd * 83
lbl_result.config(text=f"₹{inr:.2f}")
except ValueError:
lbl_result.config(text="Invalid Input")
# GUI Setup
window = tk.Tk()
window.title("Currency Converter")
window.mainloop()
5acXjz Uk
Question: Create an Age Calculator where users enter their birth year and get their age.
Solution:
import tkinter as tk
from datetime import datetime
def calculate_age():
try:
birth_year = int(entry_year.get())
current_year = datetime.now().year
age = current_year - birth_year
lbl_result.config(text=f"You are {age} years old.")
except ValueError:
lbl_result.config(text="Invalid Year")
# GUI Setup
window = tk.Tk()
window.title("Age Calculator")
window.mainloop()
Solution:
import tkinter as tk
import string
import random
def generate_password():
characters = string.ascii_letters + string.digits + string.punctuation
password = ''.join(random.choice(characters) for i in range(8))
lbl_result.config(text=f"Generated Password: {password}")
# GUI Setup
window = tk.Tk()
window.title("Password Generator")
5acXjz Uk
lbl_result.pack()
window.mainloop()
Solution:
import tkinter as tk
import time
def start_countdown():
try:
count = int(entry_time.get())
while count >= 0:
lbl_result.config(text=f"Time Remaining: {count} seconds")
window.update()
time.sleep(1)
count -= 1
lbl_result.config(text="Time's up!")
except ValueError:
lbl_result.config(text="Invalid Input")
# GUI Setup
window = tk.Tk()
window.title("Countdown Timer")
window.mainloop()
Solution:
import tkinter as tk
import random
def play(choice):
options = ["Rock", "Paper", "Scissors"]
computer_choice = random.choice(options)
5acXjz Uk
if choice == computer_choice:
result = "It's a tie!"
elif (choice == "Rock" and computer_choice == "Scissors") or \
(choice == "Paper" and computer_choice == "Rock") or \
(choice == "Scissors" and computer_choice == "Paper"):
result = "You Win!"
else:
result = "You Lose!"
lbl_result.config(text=f"Computer: {computer_choice}\n{result}")
# GUI Setup
window = tk.Tk()
window.title("Rock Paper Scissors")
frame = tk.Frame(window)
frame.pack()
window.mainloop()
Solution:
import tkinter as tk
def change_color(color):
window.configure(bg=color)
# GUI Setup
window = tk.Tk()
window.title("Color Changer")
window.geometry("300x200")
window.mainloop()
5acXjz Uk
Question: Create a digital clock using GUI that updates every second.
Solution:
import tkinter as tk
from time import strftime
def update_time():
current_time = strftime('%H:%M:%S %p')
lbl_time.config(text=current_time)
lbl_time.after(1000, update_time)
# GUI Setup
window = tk.Tk()
window.title("Digital Clock")
update_time()
window.mainloop()
Solution:
import tkinter as tk
counter = 0
running = False
def update_timer():
if running:
global counter
counter += 1
time_display.config(text=f"{counter//60:02d}:{counter%60:02d}")
root.after(1000, update_timer)
def start_timer():
global running
if not running:
running = True
update_timer()
def stop_timer():
global running
running = False
def reset_timer():
global running, counter
running = False
counter = 0
time_display.config(text="00:00")
root = tk.Tk()
5acXjz Uk
root.title("Stopwatch")
root.mainloop()
Solution:
import tkinter as tk
import string
import random
def generate_password():
length = int(entry_length.get())
characters = string.ascii_letters + string.digits + string.punctuation
password = ''.join(random.choices(characters, k=length))
result.set(password)
root = tk.Tk()
root.title("Password Generator")
result = tk.StringVar()
tk.Entry(root, textvariable=result, width=30,
state='readonly').pack(pady=5)
root.mainloop()
Solution:
import tkinter as tk
5acXjz Uk
from tkinter import messagebox
questions = [
{"question": "What is the capital of France?", "answer": "Paris"},
{"question": "Which planet is known as the Red Planet?", "answer":
"Mars"},
{"question": "What is 5 + 7?", "answer": "12"}
]
current_question = 0
score = 0
def check_answer():
global current_question, score
user_answer = entry_answer.get().strip()
if user_answer.lower() ==
questions[current_question]["answer"].lower():
score += 1
messagebox.showinfo("Correct!", "That's the right answer!")
else:
messagebox.showerror("Wrong!", f"Correct answer:
{questions[current_question]['answer']}")
current_question += 1
if current_question < len(questions):
lbl_question.config(text=questions[current_question]["question"])
entry_answer.delete(0, tk.END)
else:
messagebox.showinfo("Quiz Over", f"Your final score is
{score}/{len(questions)}")
root.destroy()
root = tk.Tk()
root.title("Quiz App")
entry_answer = tk.Entry(root)
entry_answer.pack(pady=5)
root.mainloop()
Solution:
5acXjz Uk
engine = pyttsx3.init()
def speak():
text = entry_text.get("1.0", tk.END).strip()
if text:
engine.say(text)
engine.runAndWait()
root = tk.Tk()
root.title("Text to Speech")
root.mainloop()
Solution:
import tkinter as tk
def convert():
km = float(entry_km.get())
miles = km * 0.621371
result.set(f"{miles:.2f} miles")
root = tk.Tk()
root.title("Unit Converter")
result = tk.StringVar()
tk.Label(root, textvariable=result, font="Arial 12 bold").grid(row=2,
column=0, columnspan=2)
root.mainloop()
5acXjz Uk
scenario-based questions and solutions focused on Tkinter GUI
widgets
Solution:
import tkinter as tk
count = 0
def increase_count():
global count
count += 1
label.config(text=f"Count: {count}")
root = tk.Tk()
root.title("Button Click Counter")
root.mainloop()
Solution:
import tkinter as tk
from tkinter import messagebox
def validate_input():
user_input = entry.get()
if user_input.isdigit():
result_label.config(text=f"Valid Number: {user_input}")
else:
messagebox.showerror("Error", "Please enter a valid number!")
5acXjz Uk
root = tk.Tk()
root.title("Number Validator")
entry = tk.Entry(root)
entry.pack(pady=5)
root.mainloop()
Solution:
import tkinter as tk
def change_color():
color = color_var.get()
root.config(bg=color)
root = tk.Tk()
root.title("Color Selector")
color_var = tk.StringVar(value="white")
root.mainloop()
Solution:
import tkinter as tk
def show_selection():
selected = []
if chk_python_var.get():
5acXjz Uk
selected.append("Python")
if chk_java_var.get():
selected.append("Java")
if chk_cpp_var.get():
selected.append("C++")
root = tk.Tk()
root.title("Checkbox Example")
chk_python_var = tk.BooleanVar()
chk_java_var = tk.BooleanVar()
chk_cpp_var = tk.BooleanVar()
root.mainloop()
Solution:
import tkinter as tk
def show_selected():
selected_fruit = listbox.get(listbox.curselection())
label_result.config(text=f"Selected Fruit: {selected_fruit}")
root = tk.Tk()
root.title("Listbox Example")
listbox.pack(pady=5)
5acXjz Uk
root.mainloop()
Solution:
import tkinter as tk
from tkinter import ttk
def display_choice():
label_result.config(text=f"Selected: {combo.get()}")
root = tk.Tk()
root.title("ComboBox Example")
root.mainloop()
Solution:
import tkinter as tk
def change_shade(value):
value = int(value)
color = f'#{value:02x}{value:02x}{value:02x}'
root.config(bg=color)
root = tk.Tk()
root.title("Slider Example")
5acXjz Uk
root.mainloop()
Solution:
import tkinter as tk
root = tk.Tk()
root.title("Scrollbar Example")
text_area.config(yscrollcommand=scrollbar.set)
root.mainloop()
Solution:
import tkinter as tk
def draw(event):
x, y = event.x, event.y
canvas.create_oval(x, y, x+2, y+2, fill="black")
root = tk.Tk()
root.title("Canvas Drawing")
canvas.bind("<B1-Motion>", draw)
root.mainloop()
5acXjz Uk
Scenario 10: Messagebox Example
Question:
Create a simple GUI with a button that shows a confirmation dialog.
Solution:
import tkinter as tk
from tkinter import messagebox
def show_message():
response = messagebox.askyesno("Confirm", "Do you want to continue?")
if response:
label_result.config(text="You clicked Yes!")
else:
label_result.config(text="You clicked No!")
root = tk.Tk()
root.title("Messagebox Example")
root.mainloop()
5acXjz Uk