python tkinter熊猫搜索功能出现问题

时间:2020-08-06 14:07:01

标签: python tkinter

我正在尝试制作一个使用tkinter和pandas读取EXCEL文件的程序,但是我在搜索功能上遇到了麻烦,该程序可以搜索它,并且所有内容都显示为“空数据框”,并且没有显示我正在查找的信息

[![excel文件] [1]] [1]

这是我编写的代码:

import pandas as pd
from tkinter import *
import tkinter.ttk as ttk
from tkinter.filedialog import *
from tkinter.messagebox import *
import xlrd
import xlwt


fen = Tk()
fen.geometry('320x320')

fen.title("test")

lf1=LabelFrame(fen,text='Informations')
lf1.place(x=10,y=10,width=300,height=300)

Label(lf1,text='fichier excel :').place(x=10,y=20)
Label(lf1,text='Référence :').place(x=10,y=60)
Label(lf1,text='Type :').place(x=20,y=140)
Label(lf1,text='Famille :').place(x=20,y=220)
filo = None
def add() :
    global filo
    filo=askopenfilename(filetypes=[("EXCEL","*.xlsx")])
    if filo != '':
        print('you chose a new file')
##search function

def search():
    df = pd.read_excel(filo,header=0)
    print(df)
    print(df.loc[(df['Référence Concernée'] == ref ) & (df['Type du non conformitée']== typ )])
    
fichier=ttk.Button(lf1,text='Ajouter',command=add)
fichier.place(x=120,y=20)

SearchButton = ttk.Button(lf1,text='search',command = search)
SearchButton.place(x=120,y=250)

ref=Entry(lf1)
ref.place(x=100,y=55)

typ=Entry(lf1,state='disabled')
typ.place(x=100,y=135)

Famille=Entry(lf1,state='disabled')
Famille.place(x=100,y=220)

def r1():
    typ.configure(state='normal')
    Famille.configure(state='disabled')

    
def r2():
    typ.configure(state='disabled')
    Famille.configure(state='normal')

vals = ['A', 'B']
etiqs = ['Managers','techniciens']
varGr = StringVar()

r1=ttk.Radiobutton(lf1, variable=varGr, text=etiqs[0], value=vals[0],command=r1)
r2=ttk.Radiobutton(lf1, variable=varGr, text=etiqs[1], value=vals[1],command=r2)

r1.place(x=10,y=100)
r2.place(x=10,y=180)


  [1]: https://i.stack.imgur.com/00UmP.png

1 个答案:

答案 0 :(得分:1)

基于Entry的tkinter文档,我想这就是您想要的:

def search():
    df = pd.read_excel(filo,header=0)
    print(df)
    print(df.loc[(df['Référence Concernée'] == ref.get() ) & (df['Type du non conformitée']== typ.get() )])

即您需要在get()对象上调用Entry方法以获取其当前字符串值。