"import" "tkinter" "as" "tk\nfrom" "PIL" "import" "ImageTk, Image\nimport" "plotly.graph_objects" "as" "go\n\nclass" "JupiterInfo:\n "def" "init(self, root):\n self.root = root\n self.root.title("木星信息")\n \n self.info_frame = tk.Frame(self.root)\n self.info_frame.pack(pady=10)\n \n self.diameter_label = tk.Label(self.info_frame, text="直径:139,820公里")\n self.diameter_label.pack()\n \n self.mass_label = tk.Label(self.info_frame, text="质量:1.898 × 10^27千克")\n self.mass_label.pack()\n \n self.orbit_label = tk.Label(self.info_frame, text="轨道:778,500,000公里")\n self.orbit_label.pack()\n \n self.image_frame = tk.Frame(self.root)\n self.image_frame.pack(pady=10)\n \n self.image_label = tk.Label(self.image_frame)\n self.image_label.pack()\n \n self.satellite_frame = tk.Frame(self.root)\n self.satellite_frame.pack(pady=10)\n \n self.satellite_label = tk.Label(self.satellite_frame, text="主要卫星:")\n self.satellite_label.pack()\n \n self.satellite_listbox = tk.Listbox(self.satellite_frame, width=30, height=5)\n satellites = ["伽利略卫星", "卡西尼卫星", "木卫一", "木卫二", "木卫三"]\n for satellite in satellites:\n self.satellite_listbox.insert(tk.END, satellite)\n self.satellite_listbox.pack()\n \n self.orbit_frame = tk.Frame(self.root)\n self.orbit_frame.pack(pady=10)\n \n self.animate_button = tk.Button(self.orbit_frame, text="播放轨道动画", command=self.animate_orbit)\n self.animate_button.pack(side=tk.LEFT, padx=10)\n \n self.plot_button = tk.Button(self.orbit_frame, text="绘制轨道图", command=self.plot_orbit)\n self.plot_button.pack(side=tk.LEFT)\n \n self.control_frame = tk.Frame(self.root)\n self.control_frame.pack(pady=10)\n \n self.info_button = tk.Button(self.control_frame, text="显示基本信息", command=self.show_info)\n self.info_button.pack(side=tk.LEFT, padx=10)\n \n self.image_button = tk.Button(self.control_frame, text="显示表面特征", command=self.show_image)\n self.image_button.pack(side=tk.LEFT)\n \n self.satellite_button = tk.Button(self.control_frame, text="显示卫星信息", command=self.show_satellite)\n self.satellite_button.pack(side=tk.LEFT, padx=10)\n \n self.orbit_button = tk.Button(self.control_frame, text="显示轨道信息", command=self.show_orbit)\n self.orbit_button.pack(side=tk.LEFT)\n \n self.fig = plt.figure()\n self.ax = plt.axes(xlim=(-35, 35), ylim=(-35, 35))\n self.orbits = []\n for planet in planet_data:\n orbit, = self.ax.plot([], [], 'o', lw=1, color=planet_data[planet]['color'])\n self.orbits.append(orbit)\n \n "def" "show_info(self):\n self.clear_frame()\n \n self.diameter_label = tk.Label(self.info_frame, text="直径:139,820公里")\n self.diameter_label.pack()\n \n self.mass_label = tk.Label(self.info_frame, text="质量:1.898 × 10^27千克")\n self.mass_label.pack()\n \n self.orbit_label = tk.Label(self.info_frame, text="轨道:778,500,000公里")\n self.orbit_label.pack()\n \n "def" "show_image(self):\n self.clear_frame()\n \n image_path = "木星.jpg" # 替换为实际的图片路径\n image = Image.open(image_path)\n image = image.resize((400, 300))\n self.jupiter_image = ImageTk.PhotoImage(image)\n \n self.image_label = tk.Label(self.image_frame, image=self.jupiter_image)\n self.image_label.pack()\n \n "def" "show_satellite(self):\n self.clear_frame()\n \n self.satellite_label = tk.Label(self.satellite_frame, text="主要卫星:")\n self.satellite_label.pack()\n \n self.satellite_listbox = tk.Listbox(self.satellite_frame, width=30, height=5)\n satellites = ["伽利略卫星", "卡西尼卫星", "木卫一", "木卫二", "木卫三"]\n for satellite in satellites:\n self.satellite_listbox.insert(tk.END, satellite)\n self.satellite_listbox.pack()\n \n "def" "show_orbit(self):\n self.clear_frame()\n \n self.animate_button = tk.Button(self.orbit_frame, text="播放轨道动画", command=self.animate_orbit)\n self.animate_button.pack(side=tk.LEFT, padx=10)\n \n self.plot_button = tk.Button(self.orbit_frame, text="绘制轨道图", command=self.plot_orbit)\n self.plot_button.pack(side=tk.LEFT)\n \n self.canvas = FigureCanvasTkAgg(self.fig, master=self.orbit_frame)\n self.canvas.draw()\n self.canvas.get_tk_widget().pack()\n \n "def" "animate_orbit(self):\n # 实现轨道动画的代码\n self.anim = animation.FuncAnimation(self.fig, self.update, init_func=self.init, frames=1000, interval=20, blit=True)\n \n "def" "init(self):\n for orbit in self.orbits:\n orbit.set_data([], [])\n return self.orbits\n \n "def" "update(self, frame):\n for i, planet in enumerate(planet_data):\n orbit_radius = planet_data[planet]['orbit_radius']\n orbit_period = planet_data[planet]['orbit_period']\n theta = 2 * np.pi * frame / orbit_period\n x = orbit_radius * np.cos(theta)\n y = orbit_radius * np.sin(theta)\n self.orbits[i].set_data(x, y)\n return self.orbits\n \n "def" "plot_orbit(self):\n self.fig.clear()\n self.ax = plt.axes(xlim=(-35, 35), ylim=(-35, 35))\n for planet in planet_data:\n orbit, = self.ax.plot([], [], 'o', lw=1, color=planet_data[planet]['color'])\n self.orbits.append(orbit)\n self.canvas = FigureCanvasTkAgg(self.fig, master=self.orbit_frame)\n self.canvas.draw()\n self.canvas.get_tk_widget().pack()\n \n "def" "clear_frame(self):\n for widget in self.info_frame.winfo_children():\n widget.destroy()\n \n for widget in self.image_frame.winfo_children():\n widget.destroy()\n \n for widget in self.satellite_frame.winfo_children():\n widget.destroy()\n \n for widget in self.orbit_frame.winfo_children():\n widget.destroy()\n\nroot = tk.Tk()\napp = JupiterInfo(root)\nroot.mainloop()\n\nimport" "numpy" "as" "np\nimport" "matplotlib.pyplot" "as" "plt\nimport" "matplotlib.animation" "as" "animation\nfrom" "matplotlib.animation" "import" "FuncAnimation\nimport" "matplotlib\n\n%matplotlib qt5\n#from IPython.display import HTML\n# 行星数据\nplanet_data = {\n "Mercury": {"orbit_radius": 0.387, "orbit_period": 0.24, "color": "gray"},\n "Venus": {"orbit_radius": 0.723, "orbit_period": 0.62, "color": "orange"},\n "Earth": {"orbit_radius": 1, "orbit_period": 1, "color": "blue"},\n "Mars": {"orbit_radius": 1.524, "orbit_period": 1.88, "color": "red"},\n "Jupiter": {"orbit_radius": 5.203, "orbit_period": 11.86, "color": "brown"},\n "Saturn": {"orbit_radius": 9.539, "orbit_period": 29.46, "color": "goldenrod"},\n "Uranus": {"orbit_radius": 19.18, "orbit_period": 84.01, "color": "lightblue"},\n "Neptune": {"orbit_radius": 30.07, "orbit_period": 164.8, "color": "darkblue"}\n}\n# 创建画布\nfig = plt.figure()\nax = plt.axes(xlim=(-35, 35), ylim=(-35, 35))\n\n# 行星轨迹\norbits = []\nfor planet in planet_data:\n orbit, = ax.plot([], [], 'o', lw=1, color=planet_data[planet]['color'])\n orbits.append(orbit)\n\n# 初始化函数\n"def" "init():\n for orbit in orbits:\n orbit.set_data([], [])\n return orbits\n\n# 动画更新函数\n"def" "update(frame):\n # 计算每个行星的位置\n for i, planet in enumerate(planet_data):\n orbit_radius = planet_data[planet]['orbit_radius']\n orbit_period = planet_data[planet]['orbit_period']\n theta = 2 * np.pi * frame / orbit_period\n x = orbit_radius * np.cos(theta)\n y = orbit_radius * np.sin(theta)\n orbits[i].set_data(x, y)\n return orbits\n\n# 创建动画\nanim = animation.FuncAnimation(fig, update, init_func=init, frames=1000, interval=20, blit=True)\n\n# 显示动画\nplt.show()\n#anim.save('b.gif')

木星信息 - 探索木星的奥秘

原文地址: https://www.cveoy.top/t/topic/pn5r 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录