小帅578 2021-03-21 20:48 采纳率: 0%
浏览 34

请问下面遇到的问题怎么解决?

这个程序是用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()
  • 写回答

1条回答 默认 最新

  • AlbertKou 2023-05-19 19:11
    关注

    他报的是你自己写的库的错,你不展示库的源代码我也没法告诉你怎么改啊!

    评论

报告相同问题?

问题事件

  • 请详细说明问题背景 5月19日

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘