python设计gui游戏开始页面
时间: 2023-08-31 13:08:38 浏览: 90
以下是一个简单的Python GUI游戏开始页面的示例代码:
```python
import tkinter as tk
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
# 创建标签并设置其属性
label = tk.Label(self, text="欢迎来到游戏世界!", font=controller.title_font)
label.pack(side="top", fill="x", pady=10)
# 创建按钮并设置其属性
play_button = tk.Button(self, text="开始游戏", command=lambda: controller.show_game())
play_button.pack()
quit_button = tk.Button(self, text="退出游戏", command=self.quit)
quit_button.pack()
```
在这个示例中,我们创建了一个名为StartPage的类,它继承自Tkinter的Frame类。在__init__方法中,我们创建了一个标签和两个按钮,并将它们添加到Frame中。我们还将父控制器和字体属性存储在类变量中以便以后使用。
play_button的command参数使用了lambda函数来调用控制器的show_game方法。show_game方法是一个由控制器定义的方法,它将显示游戏页面。quit_button的command参数简单地将quit方法绑定到按钮上,这样当用户点击时就会退出游戏。
使用这个类的方式是,我们将它添加到我们的Tkinter窗口中。在我们的控制器类中,我们可以使用以下代码来添加StartPage页面:
```python
class GameApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.title_font = tk.font.Font(family='Helvetica', size=18, weight="bold", slant="italic")
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in [StartPage, GamePage]:
page_name = F.__name__
frame = F(parent=container, controller=self)
self.frames[page_name] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_start()
def show_start(self):
self.frames["StartPage"].tkraise()
def show_game(self):
self.frames["GamePage"].tkraise()
```
在这个示例中,我们创建了一个名为GameApp的控制器类,它继承自Tkinter的Tk类。在__init__方法中,我们设置了标题字体并创建了一个Frame容器。我们还为每个页面创建了一个实例,并将它们添加到self.frames字典中。最后,我们调用show_start方法来显示StartPage页面。
show_start和show_game方法都使用了tkraise方法来显示相应的页面。这个方法将指定的Frame提到堆栈的最前面,以便它成为可见的页面。
阅读全文