这个程序是用PYTHON Thonny运行的,我目前想的是在界面中插入一个输入物品就能将物品插入到某个列表的函数,且能与程序的其他部分实现多线程运行,然而最终效果是这个样子的:
像这种情况应该怎么修改?
import tkinter as tk
import tkinter.font as tkFont
from 库存物品数据分析 import *
import _thread
import time
def get_kucun():
kucun_name = name_entry.get()
output_info.delete(1.0,tk.END)
sub_summary = get_kucun_data(kucun_manager_data,kucun_name,kucun_index)
if sub_summary is not None:
result = sub_summary
else:
result = '查无此物'
#显示查询结果
output_info.insert(tk.END,result)
def get_kucun2():
kucun_name2 = name_entry2.get()
output_info.delete(1.0,tk.END)
sub_summary = get_kucun_data(kucun_manager_data,kucun_name,kucun_index)
if sub_summary is not None:
result = sub_summary
else:
result = '查无此物'
#显示查询结果
output_info.insert(tk.END,result)
def del_kucun():
kucun_name = name_entry.get()
output_info.delete(1.0,tk.END)
#sub_modify_data =modify_kucun_data(kucun_manager_data,kucun_name)
if sub_modify_data is not None:
result = sub_modify_data
else:
result = '查无此物'
#显示查询结果
output_info.insert(tk.END,result)
#增补数据
def add_kucun():
kucun_name = name_entry2.get()
output_info.delete(1.0,tk.END)
#sub_modify_data2 =modify_kucun_data(kucun_manager_data)
#显示查询结果
#output_info.insert(tk.END,result)
def enter_listbox(event):
# print("函数运行")
name_list.place(relx=0.2,rely=0.3,relwidth=0.2,relheight=0.2)
# name_entry.delete(0,tk.END)def enter_listbox(event):
def enter_listbox2(event):
# print("函数运行")
name_list.place(relx=0.2,rely=0.8,relwidth=0.2,relheight=0.2)
# name_entry.delete(0,tk.END)
def itemSelected(event):
obj = event.widget
index = obj.curselection()
var.set(obj.get(index))
def show_listbox(test_list,get_name):
#print(test_list)
while 1:
get_name = name_entry.get()
if len(get_name) > 0:
if name_list.size() > 0:
#print(name_list.size())
continue
for i in range(len(test_list)):
if get_name in test_list[i]:
#print(test_list[i])
#temp_list.append(test_list[i])
name_list.insert(tk.END,test_list[i])
else:
name_list.delete(0,tk.END)
time.sleep(0.01)
def show_listbox2(test_list,get_name):
#print(test_list)
while 1:
get_name2 = name_entry2.get()
if len(get_name2) > 0:
if name_list2.size() > 0:
#print(name_list.size())
continue
for i in range(len(test_list)):
if get_name in test_list[i]:
#print(test_list[i])
#temp_list.append(test_list[i])
name_list.insert(tk.END,test_list[i])
else:
name_list.delete(0,tk.END)
time.sleep(0.01)
#获取库存名称列表
def get_kucun_name(kucun_df):
kucun_name_list = []
for index,row in kucun_df.iterrows():
kucun_name_list.append(str(row['物品名称/服务名称']))
return kucun_name_list
def get_kucun_name2(kucun_df):
kucun_name_list2 = []
for index,row in kucun_df.iterrows():
kucun_name_list2.append(str(row['物品名称/服务名称']))
return kucun_name_list2
def get_entry_name():
test_name = name_entry.get()
return test_name
def get_entry_name2():
test_name2 = name_entry2.get()
return test_name2
#查询库存名称数据
##def check_kucun_name(kucun_df,test_name):
## test_list = []
## name_list = []
## cnt = 0
## for index,row in kucun_df.iterrows():
## test_list.append(row['物品名称/服务名称'])
## for i in range(len(test_list)-1):
## if test_name in test_list[i]:
## name_temp = test_list[i]
## name_list.append(name_temp)
## cnt +=1
## if cnt == False:
## return "查无此物"
## else:
## return name_list
##test_name = input("输入名称")
##print(check_kucun_name(kucun_manager_data,test_name))
app=tk.Tk()#创建图形界面对象
app.geometry('1000x500')#程序界面尺寸
app.title('库存物品管理系统')#程序界面标题
app.configure(bg="#%02x%02x%02x" %(30,180,255))#设置程序界面背景颜色(r,g,b)
#设置显示字体大小
label_font1=tkFont.Font(size=15)
label_font2=tkFont.Font(size=20)
#设置物品名称的标签
name_label=tk.Label(app,text='物品名称',font=label_font2)
name_label.place(relx=0.05,rely=0.2)
#添加新物品
name_label=tk.Label(app,text='加入新物品',font=label_font2)
name_label.place(relx=0.05,rely=0.8)
#设置输入框并绑定一个虚拟事件
var = tk.StringVar()
name_entry=tk.Entry(app,textvariable = var,width=10,font=label_font2)
name_entry.place(relx=0.2,rely=0.2)
name_entry.bind("<Button-1>",enter_listbox)
name_entry2=tk.Entry(app,textvariable = var,width=10,font=label_font2)
name_entry2.place(relx=0.2,rely=0.8)
name_entry2.bind("<Button-3>",enter_listbox2)
#设置搜索按钮
button1=tk.Button(app,text='搜索',width=10,font=label_font2,command = get_kucun)
button1.place(relx=0.05,rely=0.5)
#设置删除按钮
button2=tk.Button(app,text='删除',width=10,font=label_font2,command = del_kucun)
button2.place(relx=0.25,rely=0.5)
#设置添加按钮
button3=tk.Button(app,text='添加',width=10,font=label_font2,command = add_kucun)
button3.place(relx=0.4,rely=0.8)
#设置输入时显示的列表框
name_list = tk.Listbox(app,width=40,font=label_font2)
name_list.bind("<<ListboxSelect>>",itemSelected)
#name_list.place(relx=0.2,rely=0.3,relwidth=0.6,relheight=0.6)
#设置列表框的滚动条
scroll = tk.Scrollbar(name_list,command=name_list.yview)
scroll.pack(side=tk.RIGHT,fill = tk.Y)
name_list.config(yscrollcommand=scroll.set)
#设置输出框
output_info=tk.Text(app,width=40,height=10,font=label_font1)
output_info.place(relx=0.45,rely=0.2)
#设置多线程函数
_thread.start_new_thread(show_listbox,(get_kucun_name(kucun_manager_data),name_entry.get()))
_thread.start_new_thread(show_listbox2,(get_kucun_name2(kucun_manager_data),name_entry2.get()))
app.mainloop()