|
|
import tkinter as tk
|
|
|
from PIL import Image, ImageTk
|
|
|
from alien_invasion import AlienInvasion
|
|
|
class ImageSwitcher:
|
|
|
def __init__(self, master, images_paths):
|
|
|
self.master = master
|
|
|
self.master.title("选择你想要的飞机")
|
|
|
self.images = []
|
|
|
self.image_frames = []
|
|
|
self.current_image_index = 0
|
|
|
rows = (len(images_paths) - 1) // 3 + 1
|
|
|
column = 0
|
|
|
row = 0
|
|
|
|
|
|
for i, path in enumerate(images_paths):
|
|
|
frame = tk.Frame(master)
|
|
|
img = Image.open(path)
|
|
|
img = img.resize((400, 260), Image.BICUBIC)
|
|
|
img_tk = ImageTk.PhotoImage(img)
|
|
|
self.images.append(img_tk)
|
|
|
image_label = tk.Label(frame, image=img_tk)
|
|
|
image_label.grid(row=0, column=0, padx=5, pady=5) # 在frame内部使用grid
|
|
|
|
|
|
button = tk.Button(frame, text=f"选择飞机 {i+1}", command=lambda index=i: self.switch_image(index),
|
|
|
font=("Arial", 18), padx=10, pady=5)
|
|
|
button.grid(row=0, column=1, padx=5, pady=5) # 在frame内部与图片并排
|
|
|
|
|
|
# 将frame添加到master中,但注意使用grid而不是pack
|
|
|
frame.grid(row=row, column=column, padx=10, pady=10)
|
|
|
|
|
|
# 更新行列索引以进行下一组图片和按钮的放置
|
|
|
column += 2 # 因为每个frame包含1个图片和1个按钮,所以column增加2
|
|
|
if column >= 3: # 假设每行3个组合
|
|
|
column = 0
|
|
|
row += 1
|
|
|
|
|
|
# 添加"确定"按钮到master的底部
|
|
|
button_show = tk.Button(master, text="确定", command=self.on_button_click,
|
|
|
font=("Arial", 18), padx=10, pady=5)
|
|
|
button_show.grid(row=rows, column=0, columnspan=3, pady=10) # 使其横跨3列
|
|
|
def show_current_image(self):
|
|
|
for frame in self.image_frames:
|
|
|
frame.pack_forget()
|
|
|
current_frame = self.image_frames[self.current_image_index]
|
|
|
current_frame.pack(pady=10)
|
|
|
|
|
|
def switch_image(self, index):
|
|
|
if 0 <= index < len(self.images):
|
|
|
self.current_image_index = index
|
|
|
self.show_current_image()
|
|
|
|
|
|
def on_button_click(self):
|
|
|
selected_image_path = images_paths[self.current_image_index]
|
|
|
alien_invasion = AlienInvasion(selected_image_path)
|
|
|
alien_invasion.run_game(selected_image_path)
|
|
|
self.master.destroy()
|
|
|
print(f"用户选择了图片: {selected_image_path}")
|
|
|
images_paths = ["images\火箭1.png", "images\火箭2.png", "images\火箭3.png","images\火箭4.png"]
|
|
|
|
|
|
def category():
|
|
|
root = tk.Tk()
|
|
|
root.geometry("1200x700")
|
|
|
root.configure(background='#666666') # 白色背景
|
|
|
app = ImageSwitcher(root, images_paths)
|
|
|
root.mainloop()
|