Список приложений не работает с Tkinter Combobox - PullRequest
0 голосов
/ 09 января 2019

Поскольку я очень плохо знаком с Python, у меня возникла проблема при попытке добавить выбранный элемент благодаря комбинированному списку внутри массива. Я хотел бы добавить выбранный элемент для фильтрации данных внутри моего фрейма данных. Надеюсь, это понятно, сложно объяснить это в тексте. Спасибо за вашу помощь.

data = pd.ExcelFile('C:\\Users\\gdeange1\\dev\\Reco_engine\\IMPORT_RECO_SYSTEM.xlsx')

df = data.parse('DATA_PYTHON',index_col=False,na_values=['NA'])

df['SwTelNo'] = df['SwTelNo'].astype(str)


df = df.reset_index()

from tkinter import *

import tkinter as tk

from tkinter import ttk

from sqlalchemy.sql.expression import column

from tkinter import  Label, Button, FALSE, Tk, Entry, StringVar

from tkinter.ttk import *

app = tk.Tk()

app.title("Reco Engine Tool")

app.geometry('500x400')


def callbackFunc(event):
   global Province
   print("Province selected : " + event.widget.get())

def callbackFunc1(event):
   global Heading
   print("Heading selected : " + event.widget.get())

def callbackFunc2(event):
   global Tier
   print("Tier selected : " + event.widget.get())

def callbackFunc3(event):
   global Channel
   print("Channel selected :" + event.widget.get())

def click():
   print(Province.get())
   print(Heading.get())
   print(Tier.get())
   print(Channel.get())

listPROVINCE = []

number1= StringVar(app)

keepvalue1 = number1.get()

Province = tk.Label(app,text = "Choose your Province")

Province.grid(column=0, row=0)

Province = ttk.Combobox(app, values=
["QUEBEC","ALBERTA","ONTARIO","ALIANT", "BRITISH COLUMBIA", "SASKATCHEWAN", "MANITOBA"], textvariable=keepvalue1, state='readonly')

Province.grid(column=0, row=1)

Province.bind("<<ComboboxSelected>>", lambda event:callbackFunc(event))

listPROVINCE.append(Province.get())

listHeadingCluster = []

number2= StringVar(app)

keepvalue2 = number1.get()

Heading = tk.Label(app,text = "Choose your Heading Cluster")

Heading.grid(column=0, row=2)

Heading = ttk.Combobox(app, values=["A","B","C","D","E","F"], 
textvariable=keepvalue2, state='readonly')

Heading.grid(column=0, row=3)

Heading.bind("<<ComboboxSelected>>", lambda event:callbackFunc1(event))

listHeadingCluster.append(Heading.get())

listTier =[]

number= StringVar(app)

keepvalue = number.get()

Tier = tk.Label(app,text = "Choose your Tier")
Tier.grid(column=0, row=4)

Tier = ttk.Combobox(app, values=["1","2","3","4"], 
textvariable=keepvalue, state='readonly')

Tier.grid(column=0, row=5)

Tier.bind("<<ComboboxSelected>>", lambda event:callbackFunc2(event))

listTier.append(Tier.get())

listChannel =[]

number3= StringVar(app)

keepvalue3 = number3.get()

Channel = tk.Label(app,text = "Choose your Province")

Channel.grid(column=0, row=6)

Channel = ttk.Combobox(app,  values=["Premise","Advantage","Acquisition", "RPT20", "RPT19", "Client 
Relations", "Retention", "Assignment Center", "Cmr", "Canyps Pub", 
"Diamond", " Diamond Biz Dev", "Direct Mail"," DoNotAssign", "Dormant Accounts", "House Accounts", "Manitoba Special Accts", "Non Sales", "Retention Premise", "Special Channels", " Third Party Acquisition", "Unassign"], textvariable=keepvalue3, state='readonly')

Channel.grid(column=0, row=7)

Channel.bind("<<ComboboxSelected>>", lambda event:callbackFunc3(event))

listChannel.append(Channel.get())

tk.Button(app, text="Click Here", command=click).grid(column=0, row=9)

app.mainloop()

dataset_2 = df[(df.Tier.isin(listTier) & (df.PROVINCE.isin(listPROVINCE)) & (df.HeadingCluster.isin(listHeadingCluster)) & (df.Channel.isin(listChannel)))]

dataset2 = dataset_2.reset_index()`

Я бы хотел хранить выбранный элемент с помощью выпадающего списка внутри массива.

Например, для провинций я выберу «ALBERTA» и добавлю это в listPROVINCE.

То же самое для остальных 3 массивов (listHeadingcluster), (listTier), (listChannel).

Я пытался использовать .current(), и это сработало. Например, в провинциях я установил Province.current(1) для получения «ALBERTA», Heading.current(0) для «A», Tier.current(0) для «1» и Channel.current(0) для «Premise».

Вот ошибка, которую я получил при попытке Province.get(), Heading.get(), Tier.get(), Channel.get():

ValueError: Найденный массив с 0 объектами (shape = (1, 0)), в то время как check_pairwise_arrays требует минимум 1.

...