系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
tkinter的介绍:
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、tkinter是什么?
Tkinter是Python的标准GUI(图形用户界面)库,它是基于Tk GUI工具包的轻量级接口。Tkinter使得在Python中创建图形界面变得相对简单和直观,适合于构建跨平台的桌面应用程序。
以下是Tkinter的一些基本概念和常用组件的介绍:
基本概念
- 窗口(Window):Tkinter应用程序的主窗口通常是通过
Tk()
类创建的。 - 小部件(Widget):Tkinter提供了多种小部件,如按钮、标签、文本框等,用于构建用户界面。
- 布局管理(Layout Management):Tkinter提供了三种布局管理器:
pack
、grid
和place
,用于管理小部件在窗口中的位置。
。
二、使用步骤
1.Label:用于显示文本或图像。
代码如下(示例):
from tkinter import Tk, Label root = Tk() label = Label(root, text="Hello, Tkinter!") label.pack() root.mainloop()
2.Button:用于创建按钮,可以绑定点击事件。
代码如下(示例):
from tkinter import Tk, Button
def on_click():
print("Button clicked!")
root = Tk()
button = Button(root, text="Click Me", command=on_click)
button.pack()
root.mainloop()
Entry:用于创建单行文本输入from tkinter import Tk, Entry
root = Tk()
entry = Entry(root)
entry.pack()
root.mainloop()
框。
4.
Text:用于创建多行文本输入框。
from tkinter import Tk, Text
root = Tk() text = Text(root)
text.pack()
root.mainloop()
三.文件展示
import tkinter as tk from tkinter import messagebox, simpledialog import csv import pygame as pg pg.mixer.init() pg.mixer.music.load("Head Empty.mp3") pg.mixer.music.play(-1) while True: class StarlightGame: def __init__(self, master): self.master = master self.master.title("星辰之光") self.name = "" self.achievements = [] self.schedule = [0] self.a = [7] self.b = [7] self.c = [7] self.d = [7] self.e = [7] self.f = [7] self.g = [7] self.h = [7] self.i = [7] self.label = tk.Label(master, text="请输入你的名字:") self.label.pack() self.name_entry = tk.Entry(master) self.name_entry.pack() self.start_button = tk.Button(master, text="开始游戏", command=self.start_adventure) self.start_button.pack() self.story_text = tk.Text(master, height=10, width=50, wrap=tk.WORD) self.story_text.pack() self.achievement_text = tk.Label(master, text="", relief=tk.SUNKEN, borderwidth=2) self.achievement_text.pack() # 添加保存和加载按钮 self.save_button = tk.Button(master, text="保存游戏", command=self.save_game) self.save_button.pack(pady=5) self.load_button = tk.Button(master, text="加载游戏", command=self.load_game) self.load_button.pack(pady=5) def all_music(self): # 选择音乐文件 music_file = "Head Empty.mp3" pg.mixer.music.load(music_file) pg.mixer.music.play(-1) def victory_music(self): pg.mixer.music.stop() # 选择另一首音乐文件 new_music_file = "7041.mp3" # 播放新的音乐 pg.mixer.music.load(new_music_file) pg.mixer.music.play() while pg.mixer.music.get_busy(): pg.time.Clock().tick(10) def end_music(self): # 停止当前播放的音乐 pg.mixer.music.stop() # 选择另一首音乐文件 new_music_file = "7042.mp3" # 播放新的音乐 pg.mixer.music.load(new_music_file) pg.mixer.music.play() def save_game(self): # 获取游戏状态 game_state = { 'name': self.name, 'achievements': self.achievements, 'story_text': self.story_text.get('1.0', tk.END), 'achievement_text': self.achievement_text.cget('text'), 'schedule': self.schedule, 'a': self.a, 'b': self.b, 'c': self.c, 'd': self.d, 'e': self.e, 'f': self.f, 'g': self.g, 'h': self.h, 'i': self.i } # 保存游戏状态到CSV文件 with open('game_save.csv', 'w', newline='', encoding='utf-8') as file: writer = csv.writer(file) for key, value in game_state.items(): writer.writerow([key, value]) messagebox.showinfo("保存游戏", "游戏已保存。") def load_game(self): # 从CSV文件加载游戏状态 try: with open('game_save.csv', 'r', newline='', encoding='utf-8') as file: reader = csv.reader(file) game_state = {rows[0]: rows[1] for rows in reader} # 恢复游戏状态 self.name = game_state['name'] self.achievements = eval(game_state['achievements']) self.story_text.delete('1.0', tk.END) self.story_text.insert(tk.END, game_state['story_text']) self.achievement_text.config(text=game_state['achievement_text']) self.schedule = eval(game_state['schedule']) self.a = eval(game_state['a']) self.b = eval(game_state['b']) self.c = eval(game_state['c']) self.d = eval(game_state['d']) self.e = eval(game_state['e']) self.f = eval(game_state['f']) self.g = eval(game_state['g']) self.h = eval(game_state['h']) self.i = eval(game_state['i']) messagebox.showinfo("加载游戏", "游戏已加载。") except FileNotFoundError: messagebox.showerror("加载游戏", "没有找到保存的游戏文件。") except Exception as e: messagebox.showerror("加载游戏", f"加载游戏时出现错误:{e}") def start_adventure(self): if self.schedule[0] == 0: self.name = self.name_entry.get() self.update_story(f"欢迎你,{self.name}!\n") self.adventure_start() elif self.schedule[0] == 1: if self.a[0] == 0: self.go_hunt_wolves() else: self.stay_in_village() elif len(self.schedule) == 2: if self.schedule[1] == 0: if self.b[0] == 0: self.let_wolf_in() elif self.b[0] == 1: self.refuse_wolf() else: if self.b[0] == 0: self.meet_wolf() else: self.wander_alone() elif len(self.schedule) == 3: if self.schedule[2] == 0: if self.c[0] == 0: self.fight_wolf() else: self.escape_wolf() elif self.schedule[2] == 1: if self.c[0] == 0: self.search_for_food() else: self.return_to_village() elif self.schedule[2] == 2: if self.c[0] == 0: self.search_for_wolf_king() elif self.c[0] == 1: self.continue_alone() elif len(self.schedule) == 4: if self.schedule[3] == 0: self.find_village_alliance() elif self.schedule[3] == 1: if self.d[0] == 0: self.jiannan() else: self.end_game() elif self.schedule[3] == 2: self.jiannan() elif len(self.schedule) == 5: if self.schedule[4] == 0: if self.e[0] == 0: self.join_alliance() else: self.dont_join_alliance() if self.schedule[4] == 1: if self.e[0] == 0: self.dont_join_alliance() elif len(self.schedule) == 6: if self.f[0] == 0: self.fight_alone() else: self.escape_alone() elif len(self.schedule) == 7: if self.g[0] == 0: self.continue_alone() else: self.end_music() self.end_game() def adventure_start(self): self.schedule = [0] self.a = [7] self.b = [7] self.c = [7] self.d = [7] self.e = [7] self.f = [7] self.g = [7] self.h = [7] self.i = [7] self.update_story("\n这是一个月圆之夜,今天是你的生日。") self.update_achievement("成就:无") choice = simpledialog.askstring("选择", f"首领找到你,问:‘{self.name},你已经成年了,是否要出去进行一番冒险。(1为同意2为拒绝)’") self.schedule[0] = 1 if choice.strip() == '1': self.a[0] = 0 self.go_hunt_wolves() else: self.a[0] = 1 self.stay_in_village() def stay_in_village(self): self.schedule.append(0) self.update_story("\n你选择留守在村子里。首领虽无可奈何,也没强求。") self.update_story("这天傍晚,有一个人闯入你家,说是首领要求来的,请求进来。") choice = simpledialog.askstring("选择", "你要让他进来吗?(1为同意2为拒绝)") if choice.strip() == '1': self.schedule[0] = 2 self.b[0] = 0 self.let_wolf_in() else: self.schedule[0] = 2 self.b[0] = 1 self.refuse_wolf() def let_wolf_in(self): self.update_story("\n你同意了他的请求。") self.update_story("副首领嫌弃你的懦弱,把你打晕丢出了村子,你被路过的凶兽吃掉了。") self.update_achievement("————解锁成就:懦夫————") self.end_music() self.end_game() def refuse_wolf(self): self.update_story("\n你拒绝了他的请求。") self.update_story("到了晚上,你一个人坐在家中,忘记了去哨塔值班。") self.update_story( "一群狼人在潜伏在村子里的狼王的带领下,趁着夜色冲进了村子。村子里所有的人都被杀死了,除了你。") self.update_achievement("————解锁成就:幸存者————") self.decide_next() def decide_next(self): self.update_story("等到狼王带着狼人离开,村庄变成了废墟,你十分自责,看了看他们离开的方向。") choice = simpledialog.askstring("选择", "你是否要尝试去寻找狼王并复仇?(1去复仇,2去游荡)") if choice.strip() == '1': self.schedule.append(2) self.c[0] = 0 self.search_for_wolf_king() else: self.schedule.append(2) self.c[0] = 1 self.continue_alone() def search_for_wolf_king(self): self.update_story("\n你在追踪狼王的过程中被狼人发现,死于非命。") self.update_achievement("————解锁成就:大怨种————") self.end_music() self.end_game() def update_story(self, text): self.story_text.config(state=tk.NORMAL) self.story_text.insert(tk.END, text) self.story_text.config(state=tk.DISABLED) def update_achievement(self, achievement): self.achievement_text.config(text=achievement) def go_hunt_wolves(self): self.schedule.append(1) self.update_story("\n你选择了出发。\n你在野外前进,发现了一个人,他自我介绍说他叫莱奥,是个屠狼师。") join_choice = simpledialog.askstring("选择", f"莱奥请求加入你的队伍,你是否接纳他?(1为同意2为拒绝)") if join_choice.strip() == '1': self.schedule[0] = 2 self.b[0] = 0 self.update_story("你接纳了莱奥作为伙伴。") self.update_achievement("————解锁成就:伙伴————") self.meet_wolf() else: self.schedule[0] = 2 self.b[0] = 1 self.update_story("你没有接纳莱奥。") self.update_story("莱奥似乎有些失望,但他没有多说什么,只是祝你好运,然后离开了。") self.wander_alone() def wander_alone(self): self.update_story("\n你独自继续在森林中前行,没有莱奥的陪伴,你感到了一丝孤独。") difficulty_choice = simpledialog.askstring("选择", "你在森林中迷路了,而且补给也快用完。你要怎么办?(1寻找食物,2返回村子)") if difficulty_choice.lower() in ['寻找食物', '1']: self.schedule.append(1) self.c[0] = 0 self.search_for_food() elif difficulty_choice.lower() in ['返回村子', '2']: self.schedule.append(1) self.c[0] = 1 self.return_to_village() def search_for_food(self): self.update_story("\n你开始在森林中寻找食物,希望能找到一些野果或狩猎小动物。") food_outcome = simpledialog.askinteger("选择", "你寻找食物的结果如何?(0或1决定你的命运)。", minvalue=0, maxvalue=1) if food_outcome == 1: self.schedule.append(1) self.d[0] = 0 self.update_story("你成功找到了食物,这让你有了继续前进的力气。") # 继续剧情 self.schedule.append(1) self.e[0] = 0 self.continue_adventure() elif food_outcome == 0: self.schedule.append(1) self.d[0] = 1 self.update_story("你没有找到足够的食物,身体开始变得虚弱,最后你噶了") self.update_achievement("————解锁成就:饥荒————") self.end_music() self.end_game() def return_to_village(self): self.update_story("\n你决定返回村子,寻找更多的帮助和补给。") self.update_story("\n在路上发现了狼人的痕迹。") self.update_story("你回到了村子,并向首领报告了情况。") self.update_story("\n在你的帮助下村庄免受屠戮。") self.achievements.append("知难而退") self.update_achievement("————解锁成就:知难而退————") self.end_music() self.end_game() def continue_adventure(self): self.update_story("\n有了食物和补给,你决定继续你的冒险。") self.update_story("\n过了一段时间你决定回村庄看看。") self.update_story("\n村庄已经变成了废墟,你在废墟之上发现了狼人的痕迹。") self.update_story("\n你失魂落魄离开村庄去游荡。") self.continue_alone() def meet_wolf(self): # 假设与莱奥一起遇到了狼 self.update_story("\n你和莱奥一起在森林中前行,突然遇到了一只狼。") fight_choice = simpledialog.askstring("选择", "你要如何应对?(1战斗,2逃跑)") if fight_choice.lower() in ['战斗', '1']: self.schedule.append(0) self.c[0] = 0 self.fight_wolf() else: self.schedule.append(0) self.c[0] = 1 self.escape_wolf() def fight_wolf(self): # 战斗胜利 self.update_story("\n你勇敢地与狼战斗并胜利了!") self.update_story("在狼的身上,你发现了一张纸条,上面写着奇怪的符号。") self.update_story("\n你决定返回村子,寻找更多的帮助和补给。") self.achievements.append("狼腹") self.update_achievement("————解锁成就:狼腹————") # 继续剧情 self.zhenjinng() def zhenjinng(self): self.update_story("\n村庄已经变成了废墟,你在废墟之上发现了狼人的痕迹。") self.update_story("\n你失魂落魄离开村庄去游荡。") self.discover_secret() def escape_wolf(self): # 逃跑失败,被狼攻击 self.update_story("\n你尝试逃跑,但未能成功,最终被狼攻击,噶了。") self.end_music() self.end_game() def discover_secret(self): # 发现秘密 self.update_story("\n你想起了狼人身上的纸条,纸条上的符号指引你前往一个神秘的地方。") secret_choice = simpledialog.askstring("选择", "你决定前往吗?(1为是,你已经被仇恨冲昏头脑,不能拒绝)") if secret_choice.lower() in ['1']: self.schedule.append(0) self.update_story("\n你决定跟随符号的指引,前往神秘之地。") # 假设在神秘之地找到了重要线索 self.update_story("在那里,你找到了关于狼群的重要线索。") self.achievements.append("西线的尽头") self.update_achievement("————解锁成就:西线的尽头————") # 继续剧情 self.find_village_alliance() def find_village_alliance(self): self.update_story("\n你发现了一个由附近村庄组成的联盟,他们共同抵抗狼群。") join_alliance_choice = simpledialog.askstring("选择", "你想要加入他们吗?(1为同意2为拒绝)") if join_alliance_choice.lower() in ['是', '1']: self.schedule.append(0) self.e[0] = 0 self.join_alliance() else: self.schedule.append(0) self.e[0] = 1 self.dont_join_alliance() def join_alliance(self): # 已存在的加入联盟的剧情 self.update_story("\n你加入了村庄联盟,一起策划如何消灭狼群。") self.update_story("经过一番激战,你们成功地消灭了狼群。") self.achievements.append("村庄联盟") self.update_achievement("————解锁成就:村庄联盟————") self.victory_music() self.end_game() def dont_join_alliance(self): self.update_story("\n你选择不加入联盟,决定依靠自己的力量继续前进。") self.update_story("联盟的成员们对你的决定感到惊讶,但尊重你的选择。") # 假设玩家在独自前行中遇到了新的挑战 challenge_choice = simpledialog.askstring("选择", "你在独自前行的路上遇到了一群狼人先锋。你要怎么办?(1战斗,2逃跑)") if challenge_choice.lower() in ['战斗', '1']: self.schedule.append(0) self.f[0] = 0 self.fight_alone() elif challenge_choice.lower() in ['逃跑', '2']: self.schedule.append(0) self.f[0] = 1 self.escape_alone() def fight_alone(self): self.update_story("\n你勇敢地迎战狼人,虽然处境艰难,但你决心一搏。") # 战斗结果 fight_outcome = simpledialog.askinteger("选择", "战斗的结果如何?(0或1决定你的命运)", minvalue=0, maxvalue=1) if fight_outcome == 1: self.schedule.append(0) self.g[0] = 0 self.update_story("你艰难地战胜了狼人,虽然受伤,但生存下来。") self.achievements.append("孤狼") self.update_achievement("————解锁成就:孤狼————") self.continue_alone() else: self.schedule.append(0) self.g[0] = 1 self.update_story("你不幸战败,被狼人所杀。") self.end_music() self.end_game() def escape_alone(self): self.update_story("\n你选择逃跑,利用你对地形的熟悉,成功摆脱了狼人。") self.update_story("但你也迷失了方向,到处游荡的时候跌入了悬崖。") self.update_achievement("————解锁成就:失足者————") self.end_music() self.end_game() def continue_alone(self): self.schedule.append(2) self.update_story("\n你继续前行,虽然前路未知,但你决心找到狼王并结束这一切。") self.jiannan() def jiannan(self): self.update_story("\n在今后游荡的路途中,你结识了一群伙伴,并肩战斗,在战斗的过程中增长经验。") self.update_story("\n多年以后。") self.update_story("\n在某次冒险的途中你有一次发现了狼王的踪迹。") # 战斗结果 fight_outcome = simpledialog.askinteger("选择", "选择放弃心中的执念不去挑战狼王,不让伙伴们落入险境,还是去为死去的村民复仇。(1复仇0退缩)", minvalue=0, maxvalue=1) if fight_outcome == 1: self.update_story("\n你们艰难地战胜了狼人,你也因此失去了手臂。") self.update_story("\n你用剑支撑起半跪的身体,默念到:我为你们报仇了。") self.achievements.append("屠狼王") self.update_achievement("————解锁成就:屠狼王————") self.victory_music() self.end_game() else: self.update_story( "\n但他始终没有勇气去面对那只曾经给他带来无尽痛苦的狼王。他害怕自己无法战胜狼王,害怕再次经历失去的痛苦。这种恐惧像一道无形的枷锁,束缚着他的心灵,让他无法迈出挑战狼王的那一步。") self.update_story( f"\n在一个风和日丽的下午,{self.name}感到自己的生命即将走到尽头,闭上眼睛,他的心中充满了对过去的悔恨。") self.achievements.append("悔恨") self.update_achievement("————解锁成就:悔恨————") self.victory_music() self.end_game() def end_game(self): self.update_story("\n游戏结束——") self.update_achievement("欢迎再度游玩!") if True: self.all_music() self.adventure_start() root = tk.Tk() game = StarlightGame(root) # 启动事件循环 root.mainloop() 音效:Head Empty ____https://m801.music.126.net/20240627183612/dcd373d5370ea4106652685ddd4f1037/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/16758809448/4c5c/b212/eab3/63e51d26b89c222365ef76f39705ff97.mp3https://m801.music.126.net/20240627183612/dcd373d5370ea4106652685ddd4f1037/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/16758809448/4c5c/b212/eab3/63e51d26b89c222365ef76f39705ff97.mp3
7041.mp3---失败音效
7042.mp3-----胜利音效
(from P V Z)
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。