Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- class MovieTicketSystem:
- def __init__(self):
- self.movies = self.load_movies() # 读取电影信息
- # 创建Tkinter界面
- self.window = tk.Tk()
- self.window.title("电影票购买管理系统")
- # 创建各种控件
- self.cinema_label = tk.Label(self.window, text="电影院:")
- self.cinema_label.grid(row=0, column=0, padx=5, pady=5)
- self.cinema_entry = tk.Entry(self.window)
- self.cinema_entry.grid(row=0, column=1, padx=5, pady=5)
- self.movie_name_label = tk.Label(self.window, text="电影名称:")
- self.movie_name_label.grid(row=1, column=0, padx=5, pady=5)
- self.movie_name_entry = tk.Entry(self.window)
- self.movie_name_entry.grid(row=1, column=1, padx=5, pady=5)
- self.movie_scene_label = tk.Label(self.window, text="电影场次:")
- self.movie_scene_label.grid(row=2, column=0, padx=5, pady=5)
- self.movie_scene_entry = tk.Entry(self.window)
- self.movie_scene_entry.grid(row=2, column=1, padx=5, pady=5)
- self.seat_label = tk.Label(self.window, text="座位号:")
- self.seat_label.grid(row=3, column=0, padx=5, pady=5)
- self.seat_entry = tk.Entry(self.window)
- self.seat_entry.grid(row=3, column=1, padx=5, pady=5)
- self.buy_button = tk.Button(self.window, text="购票", command=self.buy_ticket)
- self.buy_button.grid(row=4, column=0, padx=5, pady=5)
- self.movie_listbox = tk.Listbox(self.window)
- for movie in self.movies:
- self.movie_listbox.insert(tk.END, movie["name"])
- self.movie_listbox.bind("<<ListboxSelect>>", self.show_movie_info)
- self.movie_listbox.grid(row=5, column=0, rowspan=6, pady=5)
- self.movie_info_text = tk.Text(self.window, height=10)
- self.movie_info_text.grid(row=5, column=1, rowspan=6, padx=5, pady=5)
- self.load_movies_button = tk.Button(self.window, text="重新读取电影信息", command=self.reload_movies)
- self.load_movies_button.grid(row=11, column=0, padx=5, pady=5)
- self.quit_button = tk.Button(self.window, text="退出", command=self.quit)
- self.quit_button.grid(row=11, column=1, padx=5, pady=5)
- # 启动Tkinter界面
- self.window.mainloop()
- def load_movies(self):
- movies = []
- with open("movies.txt", "r",encoding="UTF-8") as f:
- for line in f:
- data = line.strip().split("\t")
- movie = {
- "type": data[0],
- "name": data[1],
- "score": float(data[2]),
- "director": data[3],
- "actor": data[4],
- "visual_effect": data[5],
- "scene": data[6],
- "seats": data[7],
- "price": float(data[8])
- }
- movies.append(movie)
- return movies
- def show_movie_info(self, event):
- selected_movie = self.movie_listbox.get(self.movie_listbox.curselection())
- for movie in self.movies:
- if selected_movie == movie["name"]:
- movie_info = "类型:{}\n评分:{}\n导演:{}\n主演:{}\n视觉效果:{}\n价格:{}".format(
- movie["type"], movie["score"], movie["director"], movie["actor"], movie["visual_effect"], movie["price"])
- self.movie_info_text.delete("1.0", tk.END)
- self.movie_info_text.insert(tk.END, movie_info)
- break
- def buy_ticket(self):
- cinema = self.cinema_entry.get()
- movie_name = self.movie_name_entry.get()
- scene = self.movie_scene_entry.get()
- seat = self.seat_entry.get()
- for movie in self.movies:
- if movie["name"] == movie_name and movie["scene"] == scene:
- seats = movie["seats"].split(",")
- if seat in seats:
- seats.remove(seat)
- movie["seats"] = ",".join(seats)
- self.save_movies()
- tk.messagebox.showinfo(title="购票成功", message="购票成功!")
- break
- else:
- tk.messagebox.showerror(title="购票失败", message="购票失败!")
- def reload_movies(self):
- self.movies = self.load_movies()
- self.movie_listbox.delete(0, tk.END)
- for movie in self.movies:
- self.movie_listbox.insert(tk.END, movie["name"])
- self.show_movie_info(None)
- def save_movies(self):
- with open("movies.txt", "w",encoding="UTF-8") as f:
- for movie in self.movies:
- data = "{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}".format(
- movie["type"], movie["name"], movie["score"], movie["director"], movie["actor"], movie["visual_effect"], movie["scene"], movie["seats"], movie["price"])
- f.write(data + "\n")
- def quit(self):
- if tk.messagebox.askyesno(title="确认退出", message="是否确认退出?"):
- self.window.quit()
- if __name__ == "__main__":
- app = MovieTicketSystem()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement