一个python代码中,有一个列表,列表中是不同的字段名,这些字段名代表了不同的列表,在画图时,刚开始不画任何折线,给一个选项卡或者时菜单栏,完整代码
时间: 2023-10-25 13:06:33 浏览: 43
好的,我可以为您提供一个示例代码,实现在一个python GUI界面中,通过菜单栏选择要展示的折线图。
首先,需要安装matplotlib和tkinter库。您可以使用以下命令进行安装:
```
pip install matplotlib
```
```
sudo apt-get install python3-tk
```
接下来,是完整的代码实现:
```python
import tkinter as tk
import matplotlib.pyplot as plt
class GraphApp(tk.Tk):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.title('Graph Application')
self.geometry('400x300')
# 创建菜单栏
menubar = tk.Menu(self)
self.config(menu=menubar)
# 创建文件菜单
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label='退出', command=self.quit)
menubar.add_cascade(label='文件', menu=file_menu)
# 创建图形菜单
graph_menu = tk.Menu(menubar, tearoff=0)
graph_menu.add_command(label='折线图', command=self.draw_line_graph)
menubar.add_cascade(label='图形', menu=graph_menu)
# 创建数据
self.data = {
'列表1': [1, 2, 3, 4, 5],
'列表2': [2, 4, 6, 8, 10],
'列表3': [3, 6, 9, 12, 15]
}
def draw_line_graph(self):
# 创建对话框
dialog = GraphDialog(self, self.data.keys())
self.wait_window(dialog)
# 获取用户选择的列表
selected = dialog.selection
if not selected:
return
# 绘制折线图
plt.plot(self.data[selected])
plt.title(selected)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
class GraphDialog(tk.Toplevel):
def __init__(self, parent, options):
super().__init__(parent)
self.title('选择列表')
self.geometry('200x100')
self.selection = None
# 创建控件
self.lbl = tk.Label(self, text='请选择一个列表:')
self.lbl.pack(pady=10)
self.var = tk.StringVar(self)
self.var.set(options[0])
self.opt = tk.OptionMenu(self, self.var, *options)
self.opt.pack(pady=10)
self.btn = tk.Button(self, text='确定', command=self.on_ok)
self.btn.pack(pady=10)
def on_ok(self):
self.selection = self.var.get()
self.destroy()
if __name__ == '__main__':
app = GraphApp()
app.mainloop()
```
在这个示例代码中,我们创建了一个GraphApp类,它继承自tkinter.Tk类,表示我们的应用程序是一个窗口应用程序。我们创建了一个菜单栏,包括文件菜单和图形菜单。文件菜单中只有一个退出选项,点击后退出应用程序。图形菜单中有一个折线图选项,点击后打开对话框,让用户选择要展示的列表。然后绘制选择的列表的折线图。
GraphDialog类是一个对话框类,继承自tkinter.Toplevel类,表示一个顶级窗口。我们在这个对话框中创建了一个下拉框,让用户选择要展示的列表,还有一个确定按钮。当用户点击确定按钮时,对话框关闭,并记录用户选择的列表。
在GraphApp类的draw_line_graph方法中,我们首先创建一个GraphDialog对话框,等待用户选择。然后根据用户选择的列表,绘制折线图并展示出来。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)