Mysql 在Tkinter中创建表

Mysql 在Tkinter中创建表,mysql,python-3.x,tkinter,Mysql,Python 3.x,Tkinter,我想在MySQL中使用select语句显示满足特定条件的所有数据,并将其与字段名一起以表格的形式显示在Tkinter界面上。我的sql表格包含字段DATE_of_Purchase(日期)、PART_NO(varchar)、COMPONENT_name(varchar)、QUANTITY(大整数)、COST_PER_UNIT(float)、TOTAL_COST(float).有人能帮忙吗?我试过这个: import tkinter as tk from tkinter import ttk fro

我想在MySQL中使用select语句显示满足特定条件的所有数据,并将其与字段名一起以表格的形式显示在Tkinter界面上。我的sql表格包含字段DATE_of_Purchase(日期)、PART_NO(varchar)、COMPONENT_name(varchar)、QUANTITY(大整数)、COST_PER_UNIT(float)、TOTAL_COST(float).有人能帮忙吗?我试过这个:

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()
将tkinter作为tk导入
从tkinter导入ttk
从tkinter进口*
从tkcalendar导入日历,日期输入
将MySQLdb导入为mydb
导入日期时间
导入tkinter.messagebox
root=tk.tk()
tabcontrol=ttk.Notebook(根目录)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text=“输入表单”)
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text=“报告”)
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute(“使用运算符”)
def savedata():
etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(表1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)
etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()
cal=DateEntry(宽度=12,背景为深蓝色),
前景(白色),边框宽度=2)
dt=校准获取日期()
dt1=datetime.datetime.strftime(dt,%Y-%m-%d')
etext_6=int(etext_4)*浮点(etext_5)
如果浮动(etext_5)<1000:
s=“插入采购表格(采购日期、零件号、组件名称、数量、每单位成本、总成本)值(%s、%s、%s、%s、%s)”
ss=(dt1、etext_2、etext_3、etext_4、etext_5、etext_6)
mycur.execute(s,ss)
康涅狄格州提交
def dateentry_view():
def print_sel():
全局dt
dt=校准获取日期()
txt=tk.Label(表1,text=“%s”%dt)
txt.place(x=400,y=50)
顶部=顶部标高(表1)
cal=DateEntry(顶部,宽度=12,背景为深蓝色),
前景(白色),边框宽度=2)
校准位置(x=80,y=50)
ttk.按钮(顶部,text=“ok”,命令=打印选择)。放置(x=90,y=100)
root=tk.tk()
s=ttk.Style(表1)
s、 主题使用(“蛤蜊”)
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
数量=tk.IntVar()
cpu=tk.DoubleVar()
ttk.按钮(master=tab1,text='DateEntry',
command=dateentry\u view).place(x=190,y=50)
text2=tk.Label(表1,text=“零件号:”,font=(28))
text3=tk.Label(tab1,text=“组件名称:”,font=(28))
text4=tk.Label(表1,text=“数量:”,font=(28))
text5=tk.Label(表1,text=“单位成本”,font=(28))
text2.地点(x=190,y=150)
text3.地点(x=190,y=200)
text4.位置(x=190,y=250)
文本5.位置(x=190,y=300)
etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(表1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)
etext2.位置(x=400,y=150)
etext3.位置(x=400,y=200)
etext4.位置(x=400,y=250)
etext5.位置(x=400,y=300)
etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()
def onClick(事件=无):
quantity.set(quantity.get()+1)
def关闭单击(事件=无):
quantity.set(quantity.get()-1)
按钮(tab1,text=“+”,command=onClick,fg=“深绿色”,bg=“白色”).place(x=260,y=230)
按钮(tab1,text='-',command=offClick,fg=“深绿色”,bg=“白色”).place(x=260,y=260)
按钮(tab1,text=“Save”,command=savedata).place(x=400,y=400)
root.draw()
pno=tk.StringVar()
def getfromdb():
etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(表1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)
etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()
cal=DateEntry(宽度=12,背景为深蓝色),
前景(白色),边框宽度=2)
dt=校准获取日期()
dt1=datetime.datetime.strftime(dt,%Y-%m-%d')
entry1=tk.Entry(tab2,textvariable=pno)
entry1\=entry1.get()
sel1=“从采购表格中选择采购日期、零件号、组件名称、数量、每单位成本,其中零件号类似于%s”
mycur.execute(sel1[entry1\u1])
var1=[]
var1.append(mycur.fetchall())
sel2=“从采购表格中选择计数(*),其中零件号类似于%s”
mycur.execute(sel2[entry1\u1])
var2=mycur.fetchone()
label1=var1
如果(var2[0]>0):
对于范围(0,var2[0])中的i:
对于var1中的行:
#dt.set(第[0]行)
tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
i=+20
其他:
tk.messagebox.showinfo(message=“未找到零件号”)
#表2的功能
tk.Label(tab2,text=“输入零件号”,font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
入口1.位置(x=100,y=150)
entry1\=entry1.get()
w=tk.Button(tab2,text=“Get Details”,command=getfromdb)
w、 地点(x=120,y=170)
表1.mainloop()
使用
网格(行=…,列=…)
而不是
place()
可以创建表
enumerate()
还可以用于获取
(行=…,列=…)的值(x,y)

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()
如果你也把它放在背景为黑色的
框架中,并且在网格中使用填充,那么你可以得到

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()
但当您只想显示数据时,这很有用。如果要突出显示行、按列排序、编辑,则可以使用
网格(行=…,列=…)
而不是
place()
创建表
enumerate()
还可以用于获取
(行=…,列=…)的值(x,y)

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()
如果你也把它放在背景为黑色的
框架中,并且在网格中使用填充,那么你可以得到

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()

import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()

但当您只想显示数据时,这很有用。如果您想突出显示行、按列排序、编辑,那么更好的方法是

向我们展示一些代码,您尝试了什么?您可以阅读。如果您只想显示,那么您可以
import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkcalendar import Calendar, DateEntry

import MySQLdb as mydb
import datetime
import tkinter.messagebox
root=tk.Tk()
tabcontrol=ttk.Notebook(root)
tab1=ttk.Frame(tabcontrol)
tab2=ttk.Frame(tabcontrol)
tabcontrol.add(tab1,text="Entry Form")
tabcontrol.pack(expand=1,fill='both')
tabcontrol.add(tab2,text="Report")
tabcontrol.pack(expand=1,fill='both')
conn=mydb.connect(host='localhost',user='root',passwd='root',database='operator')
mycur=conn.cursor()
mycur.execute("USE OPERATOR")

def savedata():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    etext_6=int(etext_4)*float(etext_5)
    if float(etext_5) < 1000:
        s="INSERT INTO PROCUREMENT_FORM (DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT,TOTAL_COST) VALUES (%s,%s,%s,%s,%s,%s)"
        ss=(dt1,etext_2,etext_3,etext_4,etext_5,etext_6)


mycur.execute(s,ss)

conn.commit()

def dateentry_view():
    def print_sel():
        global dt
        dt=cal.get_date()
        txt=tk.Label(tab1,text="%s"%dt)
        txt.place(x=400,y=50)

    top = tk.Toplevel(tab1)


    cal = DateEntry(top, width=12, background='darkblue',
                foreground='white', borderwidth=2)
    cal.place(x=80,y=50)
    ttk.Button(top, text="ok", command=print_sel).place(x=90,y=100)
root = tk.Tk()
s = ttk.Style(tab1)
s.theme_use('clam')
x=tk.IntVar()
partno=tk.StringVar()
cname=tk.StringVar()
quantity=tk.IntVar()
cpu=tk.DoubleVar()
ttk.Button(master=tab1, text='DateEntry', 
command=dateentry_view).place(x=190,y=50)


text2=tk.Label(tab1,text="Part No:",font=(28))
text3=tk.Label(tab1,text="Component name:",font=(28))
text4=tk.Label(tab1,text="Quantity:",font=(28))
text5=tk.Label(tab1,text="Cost per unit",font=(28))
text2.place(x=190,y=150)
text3.place(x=190,y=200)
text4.place(x=190,y=250)
text5.place(x=190,y=300)

etext2=tk.Entry(tab1,textvariable=partno)
etext3=tk.Entry(tab1,textvariable=cname)
etext4=tk.Entry(tab1,textvariable=quantity)
etext5=tk.Entry(tab1,textvariable=cpu)

etext2.place(x=400,y=150)
etext3.place(x=400,y=200)
etext4.place(x=400,y=250)
etext5.place(x=400,y=300)

etext_2=etext2.get()
etext_3=etext3.get()
etext_4=etext4.get()
etext_5=etext5.get()

def onClick(event=None):
    quantity.set(quantity.get() + 1)
def offClick(event=None):
    quantity.set(quantity.get() -1)

tk.Button(tab1, text="+", command=onClick, fg="dark green", bg = "white").place(x=260,y=230)
tk.Button(tab1,text='-',command=offClick,fg="dark green",bg="white").place(x=260,y=260)
tk.Button(tab1, text="Save",command=savedata).place(x=400,y=400)

root.withdraw()
pno=tk.StringVar()
def getfromdb():
    etext2=tk.Entry(tab1,textvariable=partno)
    etext3=tk.Entry(tab1,textvariable=cname)
    etext4=tk.Entry(tab1,textvariable=quantity)
    etext5=tk.Entry(tab1,textvariable=cpu)
    etext_2=etext2.get()
    etext_3=etext3.get()
    etext_4=etext4.get()
    etext_5=etext5.get()
    cal = DateEntry(width=12, background='darkblue',
                foreground='white', borderwidth=2)
    dt=cal.get_date()
    dt1=datetime.datetime.strftime(dt,'%Y-%m-%d')
    entry1=tk.Entry(tab2,textvariable=pno)
    entry1_=entry1.get()
    sel1="SELECT DATE_OF_PROCUREMENT,PART_NO,COMPONENT_NAME,QUANTITY,COST_PER_UNIT FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel1,[entry1_])
    var1=[]
    var1.append(mycur.fetchall())
    sel2="SELECT COUNT(*) FROM PROCUREMENT_FORM WHERE PART_NO LIKE %s"
    mycur.execute(sel2,[entry1_])
    var2=mycur.fetchone()

    label1=var1



if(var2[0]>0):
    for i in range(0,var2[0]):
            for row in var1:
           #dt.set(row[0])
               tk.Label(text=label1,font=(28)).place(x=400+i,y=150+i)
               i=+20
    else:
        tk.messagebox.showinfo(message="Part number not found")
#Features for tab 2
tk.Label(tab2,text="Enter Part No ",font=(28)).place(x=100,y=100)
entry1=tk.Entry(tab2,textvariable=pno)
entry1.place(x=100,y=150)
entry1_=entry1.get()
w=tk.Button(tab2,text="Get Details",command=getfromdb)
w.place(x=120,y=170)
tab1.mainloop()