用Python GUI编程,实现一个窗口大小为 300x100,文本字体为“微软雅黑”的窗口,要求循环10次后才可以关闭,并且文本为3个不同的词随机出现
时间: 2024-03-01 18:52:36 浏览: 104
好的,以下是实现你的要求的示例代码:
```python
import tkinter as tk
from tkinter.font import Font
import random
class MyWindow:
def __init__(self):
# 创建窗口
self.window = tk.Tk()
self.window.title("My Window")
self.window.geometry("300x100")
self.window.protocol("WM_DELETE_WINDOW", self.on_closing) # 处理关闭事件
# 设置字体
self.my_font = Font(family="微软雅黑", size=12)
# 创建标签
self.label = tk.Label(self.window, font=self.my_font)
self.label.pack()
# 初始化计数器
self.count = 0
self.update_label()
def update_label(self):
# 随机生成文本
texts = ["Hello", "World", "Python"]
text = random.choice(texts)
self.label.config(text=text)
# 计数器加1
self.count += 1
# 如果达到10次,关闭窗口
if self.count >= 10:
self.window.destroy()
else:
# 继续更新标签文本
self.window.after(1000, self.update_label)
def on_closing(self):
# 处理关闭事件
if self.count < 10:
tk.messagebox.showwarning("Warning", "Please wait for 10 cycles!")
else:
self.window.destroy()
def run(self):
# 运行窗口
self.window.mainloop()
if __name__ == '__main__':
app = MyWindow()
app.run()
```
这个代码创建了一个名为 `MyWindow` 的类,这个类中包含了一个窗口和一个标签。在类的构造函数中,设置了窗口的大小、标题和关闭事件,创建了标签,并且初始化了计数器。
在 `update_label` 方法中,随机生成文本并将其设置为标签的文本,然后将计数器加1。如果计数器达到10次,则关闭窗口;否则,继续更新标签文本,直到计数器达到10次。
在 `on_closing` 方法中,如果计数器未达到10次,则显示一个警告框,提示用户需要等待10个周期才能关闭窗口。否则,关闭窗口。
最后,在主程序中创建 `MyWindow` 实例,并且运行窗口。可以看到,这个程序会在窗口中随机显示3个不同的词,并且在循环10次后才会关闭窗口。
阅读全文