编写GUI界面,模拟抢红包游戏,在界面输入红包大小和抢红包人姓名(用逗号隔开),输出系统当前时间以及每个人抢的红包大小,要求每个人抢的红包最少不能少于0.01元,精确到小数点后两位。
时间: 2024-03-30 14:38:55 浏览: 64
好的,以下是一个使用PyQt5库编写的GUI界面代码,功能与之前的代码相同:
```python
import sys
import time
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QTextEdit, QPushButton, QVBoxLayout
class RedPacketGame(QWidget):
def __init__(self):
super().__init__()
# 初始化界面
self.initUI()
def initUI(self):
# 创建标签和输入框
self.label1 = QLabel("红包大小:")
self.entry1 = QLineEdit()
self.label2 = QLabel("抢红包人姓名:")
self.entry2 = QLineEdit()
# 创建输出框
self.text = QTextEdit()
# 创建按钮
self.button = QPushButton("开始抢红包")
self.button.clicked.connect(self.click)
# 将控件添加到布局中
vbox = QVBoxLayout()
vbox.addWidget(self.label1)
vbox.addWidget(self.entry1)
vbox.addWidget(self.label2)
vbox.addWidget(self.entry2)
vbox.addWidget(self.button)
vbox.addWidget(self.text)
# 设置窗口布局
self.setLayout(vbox)
# 设置窗口标题和大小
self.setWindowTitle("抢红包游戏")
self.setGeometry(300, 300, 300, 400)
# 显示窗口
self.show()
def click(self):
# 获取输入框的值
red_packet_size = float(self.entry1.text())
names = self.entry2.text().split(",")
num_people = len(names)
if num_people == 0:
return
# 计算每个人抢到的红包
total = 0
amounts = []
for i in range(num_people):
amount = round(red_packet_size / (num_people - i), 2)
if amount < 0.01:
amount = 0.01
total += amount
amounts.append(amount)
amounts[-1] = round(red_packet_size - total + amounts[-1], 2)
# 输出结果
self.text.clear()
self.text.append("系统当前时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + "\n")
for i in range(num_people):
self.text.append(names[i] + " 抢到了 " + str(amounts[i]) + " 元")
if __name__ == "__main__":
app = QApplication(sys.argv)
red_packet_game = RedPacketGame()
sys.exit(app.exec_())
```
在这个代码中,我们使用PyQt5库来创建GUI界面,并添加了标签、输入框、输出框和按钮。当用户点击“开始抢红包”按钮时,程序会计算每个人抢到的红包金额,并在输出框中显示结果。程序还使用了time模块来获取当前时间,以便在输出框中显示系统当前时间。
需要注意的是,程序中对于每个人抢到的红包金额进行了精确的计算,并保证每个人抢到的金额最少为0.01元,同时精确到小数点后两位。如果您有其他需求,可以根据需要进行修改。
阅读全文