守夜人jedi 2021-11-29 21:16 采纳率: 0%
浏览 42

python中将tkinter与sqlite相结合遇到的问题

问题遇到的现象和发生背景

我在做一个关于将sqlite和tkinter相结合的东西,我想实现这么一个功能,通过遍历数据库获取表名并创建按钮,但是遍历完后按钮为最后一次遍历的结果,所以我只能实现最后一个遍历的功能

问题相关代码,请勿粘贴截图

v = tkinter.IntVar(master=self.show_window)

    def click():
        add_content = Label(self.show_window, text='ff:')
        add_content.place(relx=0.26,rely=0.1)
        e_con = Entry(self.show_window)
        e_con.place(relx=0.34,rely=0.1)
        add_source = Label(self.show_window, text='dd:')
        add_source.place(relx=0.26,rely=0.21)
        e_sour = Entry(self.show_window)
        e_sour.place(relx=0.34,rely=0.21)




        def cancel():
            if add_content and add_source and e_con and e_sour and sure_button and cancel_button:
                add_content.destroy()
                add_source.destroy()
                e_con.destroy()
                e_sour.destroy()
                sure_button.destroy()
                cancel_button.destroy()

        sure_button = Button(self.show_window, text="确认", command=sure)
        sure_button.place(relx=0.34,rely=0.32)
        cancel_button = Button(self.show_window, text="取消", command=cancel)
        cancel_button.place(relx=0.43,rely=0.32)

    def sure():
        for name in self.true_list:
            print("diff名字", diff['text'])
            if name == diff['text']:
                new_con = e_con.get()
                new_sour = e_sour.get()
                print(new_con, new_sour)
                conn = sqlite3.connect(r'sens.db')
                c = conn.cursor()
                c.execute(f"insert into '{name}'(id,content,source) values(null,'{new_con}','{new_sour}');")
                conn.commit()
            else:
                continue
    loca_num = 0.1
    for name in self.true_list:
        print(name)
        diff = tkinter.Radiobutton(self.show_window, text=name, command=click,value=loca_num,variable=v)
        # diff.grid(row=loca_num, column=3)
        diff.place(relx=0.1,rely=loca_num)
        print(diff)
        loca_num += 0.1
    self.show_window.mainloop()
运行结果及报错内容

可以运行,但是仅能识别最后一次遍历的

我的解答思路和尝试过的方法

我尝试在循环里面写方法,但最后方法也相应的只有在最后一次遍历才可使用

我希望可以在对应的按钮实现对应的功能

  • 写回答

1条回答 默认 最新

  • CSDN专家-黄老师 2021-11-29 21:31
    关注

    因为diff = tkinter.Radiobutton(self.show_window, text=name, command=click,value=loca_num,variable=v)这个代码都是同一个对象,仅能识别最后一次遍历的是覆盖了之前的
    可以参考一下:
    https://www.coder.work/article/5004462

    评论

报告相同问题?

问题事件

  • 创建了问题 11月29日

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler