编写 GUI 界面,模拟抢红包游戏,在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元
时间: 2024-04-04 07:30:48 浏览: 54
好的,您的问题是编写一个 GUI 界面,模拟抢红包游戏,在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元。以下是我给出的示例代码:
```python
import tkinter as tk
import time
class RedPacketGame:
def __init__(self, master):
self.master = master
master.title("抢红包游戏")
self.red_packet_label = tk.Label(master, text="红包大小:")
self.red_packet_label.grid(row=0, column=0)
self.red_packet_entry = tk.Entry(master)
self.red_packet_entry.grid(row=0, column=1)
self.name_label = tk.Label(master, text="抢红包人姓名:")
self.name_label.grid(row=1, column=0)
self.name_entry = tk.Entry(master)
self.name_entry.grid(row=1, column=1)
self.submit_button = tk.Button(master, text="抢红包", command=self.submit)
self.submit_button.grid(row=2, column=0)
self.result_label = tk.Label(master, text="")
self.result_label.grid(row=3, column=0, columnspan=2)
def submit(self):
red_packet = float(self.red_packet_entry.get())
names = self.name_entry.get().split(",")
num_people = len(names)
min_amount = 0.01
if red_packet < num_people * min_amount:
self.result_label.config(text="红包太少啦,每个人至少能分到0.01元哦!")
return
amounts = []
for i in range(num_people-1):
amount = round(red_packet / (num_people-i) * 2 * random.random(), 2)
amounts.append(amount)
red_packet -= amount
amounts.append(round(red_packet, 2))
results = [f"{name} 抢到 {amount} 元" for name, amount in zip(names, amounts)]
self.result_label.config(text=f"系统当前时间:{time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}\n{'\n'.join(results)}")
root = tk.Tk()
game = RedPacketGame(root)
root.mainloop()
```
运行代码后,会出现一个简单的 GUI 界面,里面有两个输入框和一个按钮。在红包大小的输入框中输入红包大小,在抢红包人姓名的输入框中输入抢红包人姓名(多个人姓名之间用逗号隔开),然后点击“抢红包”按钮,程序会自动计算每个人抢到的红包金额,并在界面上显示系统当前时间和每个人抢到的红包金额。如果红包太少,无法保证每个人抢到的金额不少于0.01元,则会在界面上提示红包太少的消息。
阅读全文