用代码实现以下功能:创建tkinter窗口,实现用户登陆功能,登陆成功后显示csv内数据,并可以选择csv文件内的信息(如薪资,地区)进行可视化图表处理
时间: 2024-02-24 18:54:28 浏览: 67
好的,下面是一个简单的实现。
```python
import tkinter as tk
import pandas as pd
import matplotlib.pyplot as plt
class LoginWindow(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title("用户登录")
self.master.geometry('300x200')
self.create_widgets()
self.pack()
def create_widgets(self):
self.label_username = tk.Label(self, text="用户名")
self.label_username.pack()
self.entry_username = tk.Entry(self)
self.entry_username.pack()
self.label_password = tk.Label(self, text="密码")
self.label_password.pack()
self.entry_password = tk.Entry(self, show="*")
self.entry_password.pack()
self.btn_login = tk.Button(self, text="登录", command=self.login)
self.btn_login.pack()
def login(self):
username = self.entry_username.get()
password = self.entry_password.get()
# 这里可以写验证逻辑,比如查询数据库等
if username == "admin" and password == "123456":
self.master.destroy()
show_data_window()
class ShowDataWindow(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.title("数据展示")
self.master.geometry('600x400')
self.create_widgets()
self.pack()
def create_widgets(self):
self.label_select = tk.Label(self, text="选择展示内容")
self.label_select.pack()
self.select_var = tk.StringVar(value="薪资")
self.select_salary = tk.Radiobutton(self, text="薪资", variable=self.select_var, value="薪资")
self.select_salary.pack()
self.select_region = tk.Radiobutton(self, text="地区", variable=self.select_var, value="地区")
self.select_region.pack()
self.btn_show = tk.Button(self, text="展示图表", command=self.show_chart)
self.btn_show.pack()
def show_chart(self):
data = pd.read_csv("data.csv")
if self.select_var.get() == "薪资":
data["薪资"].plot(kind="bar")
plt.title("薪资图表")
else:
data["地区"].value_counts().plot(kind="pie")
plt.title("地区图表")
plt.show()
def show_login_window():
root = tk.Tk()
app = LoginWindow(master=root)
app.mainloop()
def show_data_window():
root = tk.Tk()
app = ShowDataWindow(master=root)
app.mainloop()
if __name__ == "__main__":
show_login_window()
```
说明:
1. 先定义了两个窗口 `LoginWindow` 和 `ShowDataWindow`,分别用于登录和数据展示。
2. 在 `LoginWindow` 中,通过 `Entry` 获取用户输入的用户名和密码,然后可以写验证逻辑。
3. 在 `ShowDataWindow` 中,用 `Radiobutton` 实现选择框,根据用户选择展示不同的图表。
4. `show_chart` 方法用 pandas 和 matplotlib 处理数据并展示图表。
5. 最后通过 `show_login_window` 启动应用程序。
阅读全文