青亭浅 2024-05-21 16:10 采纳率: 88.2%
浏览 1
已结题

(标签-sql|关键词-for)


import json
from tkinter import *
from tkinter import ttk

import pymysql


class studentClass():
    def __init__(self, master):
        self.name = StringVar()
        self.master = master
        self.createStudent()


    def createStudent(self):
        # 设置主窗口背景颜色
        self.master.configure(bg="#96CDCD")

        # 创建一个大的容器,用于放置所有控件
        container = Frame(self.master, bg="#96CDCD")
        container.pack(pady=10, padx=10, fill=BOTH, expand=True)

        # 创建标签和输入框区域
        label_frame = Frame(container, bg="#96CDCD")
        label_frame.pack(side=TOP, pady=(10, 5))

        name_label = Label(label_frame, text="姓名:", bg="#96CDCD", fg="white")
        name_label.pack(side=LEFT, padx=5)

        self.name_entry = Entry(label_frame, textvariable=self.name, width=20)
        self.name_entry.pack(side=LEFT, padx=5)

        # 创建按钮区域
        button_frame = Frame(container, bg="#96CDCD")
        button_frame.pack(side=BOTTOM, pady=(5, 10))

        query_button = Button(button_frame, text="查询", bg="#96CDCD", fg="white", command=self.query)
        query_button.pack(side=LEFT, padx=10)

        add_button = Button(button_frame, text="新增", bg="#96CDCD", fg="white", command=self.add)
        add_button.pack(side=LEFT, padx=10)

        import_button = Button(button_frame, text="导入", bg="#96CDCD", fg="white", command=self.import_data)
        import_button.pack(side=LEFT, padx=10)

        export_button = Button(button_frame, text="导出", bg="#96CDCD", fg="white", command=self.export_data)
        export_button.pack(side=LEFT, padx=10)

        # 创建表格区域
        table_frame = Frame(container, bg="#96CDCD")
        table_frame.pack(side=TOP, fill=X, expand=True)

        columns = ("name", "sdept1", "sdept", "class","teacher","score","talent")

        self.tree_view = ttk.Treeview(table_frame, show='headings', columns=columns, style="Treeview")
        self.tree_view.tag_configure("oddrow", background="#EAEAEA")
        self.tree_view.tag_configure("evenrow", background="#FFFFFF")

        self.tree_view.column("name", width=80, anchor='center')
        self.tree_view.column("sdept1", width=80, anchor='center')
        self.tree_view.column("sdept", width=80, anchor='center')
        self.tree_view.column("class", width=80, anchor='center')
        self.tree_view.column("teacher", width=80, anchor='center')
        self.tree_view.column("score", width=80, anchor='center')
        self.tree_view.column("talent", width=80, anchor='center')

        self.tree_view.heading('name', text="姓名")
        self.tree_view.heading('sdept1', text="院系")
        self.tree_view.heading('sdept', text="专业")
        self.tree_view.heading('class', text="班级")
        self.tree_view.heading('teacher', text="负责教师")
        self.tree_view.heading('score', text="学生成绩")
        self.tree_view.heading('talent', text="擅长领域")
        infor=["韩浩","软件学院","新型平台软件","2205","胡春辉","100","体育"]
        self.tree_view.insert("","end",text="Item1",values=infor)

        self.tree_view.pack(pady=10, fill=BOTH, expand=True)

        self.tree_view.bind("<Double-1>",self.tree_vi)

        # 树形视图滚动条设置
        vsb = Scrollbar(table_frame, orient="vertical", command=self.tree_view.yview)
        vsb.pack(side=RIGHT, fill=Y)
        hsb = Scrollbar(table_frame, orient="horizontal", command=self.tree_view.xview)
        hsb.pack(side=BOTTOM, fill=X)
        self.tree_view.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)

    def tree_vi(self,event=None):
        ro = Tk()
        ro.geometry("300x300")
        Label(ro, text="").grid(column=0)
        Label(ro, text="").grid(column=1)
        Label(ro, text="").grid(column=2)
        Label(ro, text="").grid(column=3)
        Label(ro, text="").grid(column=4)
        Label(ro, text="").grid(column=5)
        Label(ro, text="姓名").grid(row=1, column=6, pady=5)
        Entry(ro, width=20).grid(row=1, column=7, pady=5)
        Label(ro, text="院系").grid(row=2, column=6, pady=5)
        Entry(ro, width=20).grid(row=2, column=7, pady=5)
        Label(ro, text="专业").grid(row=3, column=6, pady=5)
        Entry(ro, width=20).grid(row=3, column=7, pady=5)
        Label(ro, text="班级").grid(row=4, column=6, pady=5)
        Entry(ro, width=20).grid(row=4, column=7, pady=5)
        Label(ro, text="分数").grid(row=5, column=6, pady=5)
        Entry(ro, width=20).grid(row=5, column=7, pady=5)
        Label(ro, text="负责教师").grid(row=6, column=6, pady=5)
        Entry(ro, width=20).grid(row=6, column=7, pady=5)
        Label(ro, text="擅长领域").grid(row=7, column=6, pady=5)
        Entry(ro, width=20).grid(row=7, column=7, pady=5)
        Button(ro, text="修改").grid(row=8, column=6,pady=10)
        Button(ro, text="删除").grid(row=8, column=8, pady=10)
        ro.mainloop()

    def query(self):
        pass

    def add(self):
        roo = Tk()
        roo.geometry("300x300")
        Label(roo,text="").grid(column=0)
        Label(roo, text="").grid(column=1)
        Label(roo, text="").grid(column=2)
        Label(roo, text="").grid(column=3)
        Label(roo, text="").grid(column=4)
        Label(roo, text="").grid(column=5)
        Label(roo, text="姓名").grid(row=1, column=6, pady=5)
        Entry(roo, width=20).grid(row=1, column=7, pady=5)
        Label(roo, text="院系").grid(row=2, column=6, pady=5)
        Entry(roo, width=20).grid(row=2, column=7, pady=5)
        Label(roo, text="专业").grid(row=3, column=6, pady=5)
        Entry(roo, width=20).grid(row=3, column=7, pady=5)
        Label(roo, text="班级").grid(row=4, column=6, pady=5)
        Entry(roo, width=20).grid(row=4, column=7, pady=5)
        Label(roo, text="负责教师").grid(row=5, column=6, pady=5)
        Entry(roo, width=20).grid(row=5, column=7, pady=5)
        Label(roo, text="擅长领域").grid(row=6, column=6, pady=5)
        Entry(roo, width=20).grid(row=6, column=7, pady=5)
        Button(roo,text="新增").grid(row=7,column=7,pady=10)
        roo.mainloop()

    def import_data(self):
        pass

    def export_data(self):
        pass


class adminClass():
    def __init__(self, master):
        self.tree = None
        self.master = master
        # Button(master, text="这是招聘管理界面", font=("微软雅黑", 14), fg="white", bg="#96CDCD").pack()
        self.createAdmin()

    def createAdmin(self):
        self.master.configure(bg="#96CDCD")
        cont = Frame(self.master)
        cont.pack(pady=10, padx=10, fill=BOTH, expand=True)

        lable_frame = Frame(cont)
        lable_frame.pack(side=TOP, pady=(10, 5))

        potion_lable = Label(lable_frame, text="职位:", fg="black")
        potion_lable.pack(side=LEFT, padx=5)

        self.position = Entry(lable_frame, font=('Verdana', 15), width=10)
        self.position.pack(side=LEFT, padx=5)
        # an
        button_frame = Frame(cont, bg="#96CDCD")
        button_frame.pack(side=BOTTOM, pady=(5, 10))

        query_button = Button(button_frame, text="查询", fg="black")
        query_button.pack(side=LEFT, padx=10)
        add_button = Button(button_frame, text="添加发布", fg="black")
        add_button.pack(side=LEFT, padx=10)

        self.table_frame = Frame(cont)
        self.table_frame.pack(side=TOP, fill=X, expand=True)

        self.columns = ("name", "position", "salary", "requirement")

        self.tree = ttk.Treeview(self.table_frame, show="headings", height=18, columns=self.columns)
        self.tree.tag_configure("oddrow", background="#EAEAEA")
        self.tree.tag_configure("evenrow", background="#FFFFFF")

        # # 表格的标题
        self.tree.column("name", width=80, anchor='center')
        self.tree.column("position", width=80, anchor='center')  # 表示列,不显示
        self.tree.column("salary", width=80, anchor='center')
        self.tree.column("requirement", width=80, anchor='center')

        self.tree.heading('name', text="公司")
        self.tree.heading('position', text="职位")
        self.tree.heading('salary', text="薪资")
        self.tree.heading('requirement', text="要求")

        self.tree.pack(pady=10, fill=BOTH, expand=True)

        # 定义树形结构与滚动条
        vsb = Scrollbar(cont, orient="vertical", command=self.tree.yview)
        vsb.pack(side=RIGHT, fill=Y)
        hsb = Scrollbar(cont, orient="horizontal", command=self.tree.xview)
        hsb.pack(side=BOTTOM, fill=X)
        self.tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)

class scoreClass():
    def __init__(self, master):
        self.master = master
        self.createscore()

    def createscore(self):
        self.master.configure(bg="#96CDCD")
        title_label = Label(self.master, text="打分系统", font=("Arial", 16))
        title_label.pack(pady=10)

        # 创建按钮框架
        button_frame = Frame(self.master)
        button_frame.pack()

        # 创建输入框和按钮
        input_entry = Entry(button_frame, width=20)
        input_entry.pack(side="left", padx=5)

        # 创建下拉框

        query_button = Button(button_frame, text="查询", width=10)
        query_button.pack(side="left", padx=5)
        new_button = Button(button_frame, text="新增任务", width=10,command=self.add_text)
        new_button.pack(side="left", padx=5)

        # 创建 Treeview
        columns = ("name", "time", "sdept", "class","discuss")

        self.tree_view = ttk.Treeview(self.master, show='headings', columns=columns, style="Treeview")
        self.tree_view.tag_configure("oddrow", background="#EAEAEA")
        self.tree_view.tag_configure("evenrow", background="#FFFFFF")

        self.tree_view.column("name", width=80, anchor='center')
        self.tree_view.column("time", width=80, anchor='center')
        self.tree_view.column("sdept", width=80, anchor='center')
        self.tree_view.column("class", width=80, anchor='center')
        self.tree_view.column("discuss", width=80, anchor='center')


        self.tree_view.heading('name', text="姓名")
        self.tree_view.heading('time', text="任务")
        self.tree_view.heading('sdept', text="任务进度")
        self.tree_view.heading('class', text="评分")
        self.tree_view.heading('discuss', text="评论")

        self.tree_view.insert("","end",values=("韩浩","实习实训","20%","",""))

        self.tree_view.bind("<Double-1>", self.tree_v)

        self.tree_view.pack(pady=10, fill=BOTH, expand=True)

        # 插入示例数据

        # 创建空行
        empty_row = Label(self.master, text="")
        empty_row.pack()

    def tree_v(self,event):
        r = Tk()
        r.geometry("300x300")
        Label(r, text="").grid(column=0)
        Label(r, text="").grid(column=1)
        Label(r, text="").grid(column=2)
        Label(r, text="").grid(column=3)
        Label(r, text="").grid(column=4)
        Label(r, text="").grid(column=5)
        Label(r, text="姓名").grid(row=1, column=6, pady=5)
        Entry(r, width=20).grid(row=1, column=7, pady=5)
        Label(r, text="任务").grid(row=2, column=6, pady=5)
        Entry(r, width=20).grid(row=2, column=7, pady=5)
        Label(r, text="任务进度").grid(row=3, column=6, pady=5)
        Entry(r, width=20).grid(row=3, column=7, pady=5)
        Label(r, text="评分").grid(row=4, column=6, pady=5)
        Entry(r, width=20).grid(row=4, column=7, pady=5)
        Label(r, text="评论").grid(row=5, column=6, pady=5)
        Entry(r, width=20).grid(row=5, column=7, pady=5)

        Button(r, text="修改").grid(row=7, column=6, pady=10)
        Button(r, text="删除").grid(row=7, column=8, pady=10)
        r.mainloop()

    def add_text(self):
        roo = Tk()
        roo.geometry("300x300")
        Label(roo, text="").grid(column=0)
        Label(roo, text="").grid(column=1)
        Label(roo, text="").grid(column=2)
        Label(roo, text="").grid(column=3)
        Label(roo, text="").grid(column=4)
        Label(roo, text="").grid(column=5)
        Label(roo, text="任务名称").grid(row=1, column=6, pady=5)
        Entry(roo, width=20).grid(row=1, column=7, pady=5)


        Label(roo, text="分配人员").grid(row=3, column=6, pady=5)
        ttk.Combobox(roo,values=("韩浩","侯建羽","郭炎鑫","郭嘉鑫")).grid(row=3,column=7,pady=5)

        Label(roo, text="任务内容").grid(row=5, column=6, pady=5)
        Entry(roo, width=20).grid(row=5, column=7, pady=5)
        Button(roo, text="新增").grid(row=7, column=7, pady=20)
        roo.mainloop()


class journalClass():
    def __init__(self, master):
        self.master = master
        self.createjournal()

    def createjournal(self):
        self.master.configure(bg="#96CDCD")
        title_label = Label(self.master, text="日志管理系统", font=("Arial", 16))
        title_label.pack(pady=10)

        # 创建按钮框架
        button_frame = Frame(self.master)
        button_frame.pack()

        # 创建输入框和按钮
        input_entry = Entry(button_frame, width=20)
        input_entry.pack(side="left", padx=5)

        # 创建下拉框
        options = ["hjy", "hh", "sb"]
        selected_option = StringVar()
        selected_option.set(options[0])
        edit_combobox = ttk.Combobox(button_frame, textvariable=selected_option, values=options, width=10)
        edit_combobox.pack(side="left", padx=5)

        query_button = Button(button_frame, text="查询", width=10)
        query_button.pack(side="left", padx=5)
        new_button = Button(button_frame, text="新增", width=10)
        new_button.pack(side="left", padx=5)

        # 创建 Treeview
        columns = ("name", "time", "sdept", "class")

        self.tree_view = ttk.Treeview(self.master, show='headings', columns=columns, style="Treeview")
        self.tree_view.tag_configure("oddrow", background="#EAEAEA")
        self.tree_view.tag_configure("evenrow", background="#FFFFFF")

        self.tree_view.column("name", width=80, anchor='center')
        self.tree_view.column("time", width=80, anchor='center')
        self.tree_view.column("sdept", width=80, anchor='center')
        self.tree_view.column("class", width=80, anchor='center')


        self.tree_view.heading('name', text="姓名")
        self.tree_view.heading('time', text="日期")
        self.tree_view.heading('sdept', text="任务进度")
        self.tree_view.heading('class', text="备注")



        self.tree_view.pack(pady=10, fill=BOTH, expand=True)

        # 插入示例数据

        # 创建空行
        empty_row = Label(self.master, text="")
        empty_row.pack()


class discussClass():
    def __init__(self, master):
        self.huatiname = StringVar()
        self.master = master
        Label(master, text="这是讨论区管理界面").pack()
        self.creatediscuss()

    def creatediscuss(self):
        self.master.configure(bg="#96CDCD")
        # 创建 Treeview 组件
        columns = ("huati", "neirong")

        self.tree_view = ttk.Treeview(self.master, show='headings', columns=columns, style="Treeview")
        self.tree_view.tag_configure("oddrow", background="#EAEAEA")
        self.tree_view.tag_configure("evenrow", background="#FFFFFF")

        self.tree_view.column("huati", width=80, anchor='center')
        self.tree_view.column("neirong", width=80, anchor='center')


        self.tree_view.heading('huati', text="话题")
        self.tree_view.heading('neirong', text="内容")


        self.tree_view.pack(pady=10, fill=BOTH, expand=True)
        # 创建输入框

        # 创建下拉框
        options= json.loads(open('HUATI.json',mode='r',encoding='utf-8').read())


        selected_option = StringVar()
        selected_option.set(options[0])
        dropdown = ttk.Combobox(self.master, textvariable=selected_option, values=options, width=20)
        dropdown.pack(side="left", padx=5)
        # 创建输入框
        entry = Text(self.master, width=40,height=5)
        entry.pack(side="left", padx=5)

        #  创建新建讨论按钮

        new_discussion_button = Button(self.master, text="发布")
        new_discussion_button.pack(side=BOTTOM, padx=0, pady=(0, 10))
        #Button.grid(row=0,column=0,columnspan=2,padx=10,pady=10)
       #创建发布按钮


        publish_button = Button(self.master, text="新建话题",command=self.add_discussion)
        publish_button.pack(side=BOTTOM, padx=0, pady=(0, 10))

        show_button = Button(self.master, text="刷新",command=self.show_discussion)
        show_button.pack(side=BOTTOM, padx=0, pady=(0, 10))
        for _ in map(self.tree_view.delete, self.tree_view.get_children("")):
            pass
        conn = pymysql.connect(
            host='localhost',
            user='root',
            password='012977',
            database='SHIXUN'
        )

        cursor = conn.cursor()

        sql = "select * from Discuss"

        cursor.execute(sql)

        rest = cursor.fetchall()
        index = 0
        for i in rest:
            print(i)
            self.tree_view.insert("", index + 1, values=(i[0], i[1]))

    def show_discussion(self):



        for _ in map(self.tree_view.delete, self.tree_view.get_children("")):
            pass
        conn = pymysql.connect(
            host='localhost',
            user='root',
            password='012977',
            database='SHIXUN'
        )

        cursor = conn.cursor()

        sql = "select * from Discuss"

        cursor.execute(sql)

        rest = cursor.fetchall()
        index = 0
        for i in rest:
            print(i)
            self.tree_view.insert("", index + 1, values=(i[0], i[1]))

    def add_discussion(self):
        root=Tk()
        root.title("新建话题")
        root.geometry("200x200")
        Label(root,text="话题").pack()
        
        Entry(root,textvariable=self.huatiname).pack()
        Button(root,text="提交",command=self.tijiao).pack(pady=20)

    def tijiao(self):
        with open("HUATI.json", "r", encoding="utf-8") as file:
            data: list = json.load(file)
            data.append(self.huatiname.get())
            print(self.huatiname.get())
        with open('HUATI.json', 'w') as file:
            json.dump(data, file, indent=4)


root = Tk()

root.geometry("700x500")

frame = Frame(root, width=100, height=500, highlightbackground="#668B8B", highlightthickness=3)
frame.config(background="#96CDCD")
frame.pack(fill=Y, side=LEFT)

bai = Label(frame)

student = Label(frame, text="学生系统", font=("微软雅黑", 14), fg="white", bg="#96CDCD")
student.place(x=5, y=30)

admin = Label(frame, text="招聘系统", font=("微软雅黑", 14), fg="white", bg="#96CDCD")
admin.place(x=5, y=120)

score = Label(frame, text="打分管理", font=("微软雅黑", 14), fg="white", bg="#96CDCD")
score.place(x=5, y=210)

journal = Label(frame, text="日志管理", font=("微软雅黑", 14), fg="white", bg="#96CDCD")
journal.place(x=5, y=300)

discuss = Label(frame, text="讨论区", font=("微软雅黑", 14), fg="white", bg="#96CDCD")
discuss.place(x=5, y=390)

stuFrame = Frame(root)
admFrame = Frame(root)
scoFrame = Frame(root)
jouFrame = Frame(root)
disFrame = Frame(root)

studentClass(stuFrame)
adminClass(admFrame)
scoreClass(scoFrame)
journalClass(jouFrame)
discussClass(disFrame)

def stuFuntion(event=None):

    stuFrame.pack(fill=BOTH, expand=True)
    admFrame.pack_forget()
    scoFrame.pack_forget()
    jouFrame.pack_forget()
    disFrame.pack_forget()


def admFuntion(event=None):

    admFrame.pack(fill=BOTH, expand=True)
    stuFrame.pack_forget()
    scoFrame.pack_forget()
    jouFrame.pack_forget()
    disFrame.pack_forget()


def scoFuntion(event=None):

    scoFrame.pack(fill=BOTH, expand=True)
    stuFrame.pack_forget()
    jouFrame.pack_forget()
    disFrame.pack_forget()
    admFrame.pack_forget()


def jouFuntion(event=None):

    jouFrame.pack(fill=BOTH, expand=True)
    stuFrame.pack_forget()
    disFrame.pack_forget()
    admFrame.pack_forget()
    scoFrame.pack_forget()


def disFuntion(event=None):

    disFrame.pack(fill=BOTH, expand=True)
    stuFrame.pack_forget()
    jouFrame.pack_forget()
    admFrame.pack_forget()
    scoFrame.pack_forget()


student.bind("<Button-1>", stuFuntion)
admin.bind("<Button-1>", admFuntion)
score.bind("<Button-1>", scoFuntion)
journal.bind("<Button-1>", jouFuntion)
discuss.bind("<Button-1>", disFuntion)

root.title("学生管理系统")

root.mainloop()

接受不到用huatinaem获取的输入框的数据

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-05-21 16:10
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【您想要解决的问题】:您的问题是在Python的Tkinter GUI应用程序中,无法接收到通过huatinaem(应该是huatianname,一个StringVar变量)获取的输入框的数据。

    【问题出现原因】:问题可能出在add_discussion函数中的tijiao函数里,您尝试从self.huatiname.get()获取数据,但是没有正确地将用户在输入框中的输入与huatianname变量关联起来。

    【问题解决方案】:要解决这个问题,需要确保输入框的数据能够被StringVar变量接收,并且在提交时能够正确获取到这个数据。

    【提供代码】:以下是修改后的代码片段,主要修改了add_discussion函数中的tijiao方法,确保能够获取到输入框的数据。

    # 在discussClass中添加以下方法
    def add_discussion(self):
        root = Tk()
        root.title("新建话题")
        root.geometry("200x200")
        Label(root, text="话题").pack()
        
        # 确保输入框与StringVar变量关联
        self.huatiname = Entry(root)
        self.huatiname.pack()
        
        Button(root, text="提交", command=self.tijiao).pack(pady=20)
    
    def tijiao(self):
        # 获取输入框的数据
        topic_name = self.huatiname.get()
        print(topic_name)
        
        # 假设有一个方法来处理获取到的话题名称
        self.process_topic_name(topic_name)
    
    # 添加处理话题名称的方法
    def process_topic_name(self, topic_name):
        # 这里添加处理topic_name的代码,例如保存到数据库或文件
        pass
    

    【代码运行方式】:将上述代码替换到原有的discussClass中相应的部分,并确保整个应用程序能够正确运行。您需要有Python环境以及Tkinter库。

    【代码预期运行结果】:

    新建话题
    话题:[用户输入的话题名称]
    提交
    

    点击提交后,控制台将打印出用户输入的话题名称。

    【推荐相关链接】:

    1. Tkinter StringVar 官方文档
    2. Tkinter Entry 官方文档
    3. Tkinter Combobox 官方文档
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 5月21日

悬赏问题

  • ¥15 Stable Diffusion视频动画制作时,第一步蒙版生成报错怎么处理啊,蒙版和帧图没法生成
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上