create a bingo interactive game GUI in tkinter using python code.
Creating a Bingo game GUI using Tkinter in Python is a fun project! Below is an example implementation. In this code, a simple Bingo game with buttons to call numbers and a grid for players to mark their selections is created.
1. First, ensure you have Python installed on your system.
2. You can run the following code in any Python environment that supports Tkinter, such as IDLE or any other Python IDE.
Here's the code for a simple Bingo game using Tkinter:
```python
import tkinter as tk
import random
class BingoGame:
def __init__(self, master):
self.master = master
self.master.title("Bingo Game")
self.bingo_card = self.generate_bingo_card()
self.called_numbers = set()
self.create_widgets()
def generate_bingo_card(self):
numbers = {
'B': random.sample(range(1, 16), 5),
'I': random.sample(range(16, 31), 5),
'N': random.sample(range(31, 46), 4) # One less for the center
}
numbers['N'].insert(2, "FREE") # Center space
numbers['G'] = random.sample(range(46, 61), 5)
numbers['O'] = random.sample(range(61, 76), 5)
return numbers
def create_widgets(self):
self.bingo_frame = tk.Frame(self.master)
self.bingo_frame.pack()
# Create Bingo Card
for col, letter in enumerate("BINGO"):
tk.Label(self.bingo_frame, text=letter, font=('Arial', 16)).grid(row=0, column=col)
for col, letter in enumerate(self.bingo_card):
for row, number in enumerate(self.bingo_card[letter]):
if number == "FREE":
label = tk.Label(self.bingo_frame, text=number, font=('Arial', 16), bg="yellow")
else:
label = tk.Label(self.bingo_frame, text=number, font=('Arial', 16), bg="white")
label.bind("<Button-1>", self.mark_number)
label.grid(row=row + 1, column=col, sticky="nsew")
# Create called number display
self.called_numbers_label = tk.Label(self.master, text="", font=('Arial', 16))
self.called_numbers_label.pack(pady=10)
# Create "Call Number" Button
self.call_button = tk.Button(self.master, text="Call Number", command=self.call_number, font=('Arial', 16))
self.call_button.pack(pady=10)
# Configure grid rows and columns
for i in range(6): # 5 numbers + header
self.bingo_frame.grid_rowconfigure(i, weight=1)
for i in range(5): # 5 columns
self.bingo_frame.grid_columnconfigure(i, weight=1)
def call_number(self):
all_numbers = {n for n in range(1, 76)}
available_numbers = all_numbers - self.called_numbers
if available_numbers:
number = random.choice(list(available_numbers))
self.called_numbers.add(number)
self.called_numbers_label.config(text=f"Called Number: {number}")
else:
self.called_numbers_label.config(text="All numbers have been called!")
def mark_number(self, event):
label = event.widget
number_text = label.cget("text")
if number_text != "FREE":
number = int(number_text)
if number in self.called_numbers:
label.config(bg="green")
else:
tk.messagebox.showinfo("Info", "Number not called yet!")
if __name__ == "__main__":
root = tk.Tk()
game = BingoGame(root)
root.mainloop()
```
### Instructions to Run:
1. Copy the code into a Python file (e.g., `bingo_game.py`).
2. Run the file using Python.
3. A Bingo game GUI will appear. Click on "Call Number" to generate and display called numbers, and click on the Bingo numbers on the card to mark them when they're called.
### Features:
- A simple Bingo card layout.
- A button to call random Bingo numbers.
- An interactive grid to mark numbers that have been called.
You can further enhance this game by adding features such as:
- A winning condition check.
- A reset button to start a new game.
- User input for custom Bingo cards.
Feel free to modify the code and expand on this basic functionality!


