首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tkinter和db连接的Python GUI

使用tkinter和db连接的Python GUI
EN

Stack Overflow用户
提问于 2014-11-18 22:24:10
回答 2查看 9.9K关注 0票数 0

我无法从以下program.What获得任何输出。我在这里尝试做的是将员工姓名和薪水存储在数据库中,然后根据姓名删除数据库条目,id.It没有给出任何错误。我认为这是一个数据库错误。它不会在数据库中插入任何值。请帮帮忙。谢谢

代码语言:javascript
复制
import Tkinter
import sqlite3
import ttk


def put(*args):
    try:
        e_name = str(i_name)
        e_pay = int(i_pay)
        conn = sqlite3.connect('medha.db')
        c = conn.cursor()
        c.execute('create table if not exists employee(id integer primary key auto increment, name text, salary integer)')
        c.execute('insert into employee(name, salary) values(?,?)',(e_name,e_pay))
        conn.close()
        notice = 'insertion successful'
    except:
        notice ='insert proper values'

def del_id(*args):
    try:
        e_id = int(d_del)
        conn = sqlite3.connect('medha.db')
        c = conn.cursor()
        c.execute('delete from employee where id =?',(e_id))
        notice = 'deleted successfully'
        conn.close()
    except:
        notice = 'insert proper values'

def del_name(*args):
    try:
        e_name = int(d_del)
        conn = sqlite3.connect('medha.db')
        c = conn.cursor()
        c.execute('delete from employee where name = ?',(e_name))
        notice = 'deleted successfully'
        conn.close()
    except:
        notice = 'insert proper values'

root = Tkinter.Tk()
root.title('Python Projet - gui and db')

mainframe = ttk.Frame(root,padding='3 3 12 12' )
mainframe.grid(column=0, row=0)
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight =1)

i_name = str()
i_id = str()
i_pay = str()
notice = str()
d_del = str()

i_name_entry = ttk.Entry(mainframe, width =7, textvariable = i_name)
i_name_entry.grid(column = 1, row = 1)

i_id_entry = ttk.Entry(mainframe, width =7, textvariable = i_id)
i_id_entry.grid(column = 2, row = 1)

i_pay_entry = ttk.Entry(mainframe, width =7, textvariable = i_pay)
i_pay_entry.grid(column = 3, row = 1)

i_del_entry = ttk.Entry(mainframe, width =7, textvariable = d_del)
i_del_entry.grid(column = 1, row =4)

ttk.Label(mainframe, text ='Name of Employee').grid(column = 1, row = 0)
ttk.Label(mainframe, text ='Employee ID').grid(column = 2, row =0)
ttk.Label(mainframe, text ='Employee Pay').grid(column = 3, row=0)
ttk.Label(mainframe, text ='Name/ID of Employee to delete').grid(column = 1, row=3)
ttk.Label(mainframe, text = notice).grid(column = 1, row = 6)

ttk.Button(mainframe, text='Insert', command = put).grid(column=3, row=2)
ttk.Button(mainframe, text='Delete By ID', command = del_id).grid(column =1, row = 5)
ttk.Button(mainframe, text='Delete By Name', command = del_name).grid(column = 3, row=5)

for child in mainframe.winfo_children(): child.grid_configure(padx=5,pady=5)
i_name_entry.focus()

root.mainloop()

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2014-11-18 22:30:28

代码语言:javascript
复制
ttk.Label(mainframe, text = notice).grid(column = 1, row = 6)

更改字符串notice的值不会更新此标签中的文本。为此,您需要使用StringVar

代码语言:javascript
复制
notice = Tkinter.StringVar()
ttk.Label(mainframe, textvariable = notice).grid(column = 1, row = 6)

然后,在函数中使用notice.set("whatever"),而不是使用notice = "whatever"

或者,根本没有notice值。只需直接重新配置文本变量即可。

代码语言:javascript
复制
notice_label = ttk.Label(mainframe, text = "")
notice_label.grid(column = 1, row = 6)

(注意:不要试图在同一行中赋值notice_label和执行grid,它不会起作用)

然后用notice_label.config(text = "whatever")代替notice = "whatever"

票数 0
EN

Stack Overflow用户

发布于 2019-11-20 09:59:55

首先,尝试查看是否已连接到数据库。使用postgreSQL,您可以通过psycopg2进行连接

代码语言:javascript
复制
import psycopg2

try:    
        conn = psycopg2.connect(database="user", user="postgres", password="silverTip", host="localhost")
        print("connected")
    except:
        print ("I am unable to connect to the database")
    cur =conn.cursor()

因此,如果您已连接到数据库,它将显示connected,否则将显示消息unable to connect to database

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26996596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档