проблема с функцией поиска python tkinter pandas - PullRequest
1 голос
/ 06 августа 2020

Я пытаюсь создать программу, которая читает файлы EXCEL с помощью tkinter и pandas, но у меня проблемы с функцией поиска, программа работает, она ищет, и все, кроме того, что говорит «пустой фрейм данных» и не показывает информацию i ищу.

[! [файл 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 Ответ

1 голос
/ 06 августа 2020

На основе документации tkinter для Entry Я предполагаю, что это то, что вы хотите:

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 объекты, чтобы вернуть их текущие строковые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...