Python 奇维产品搜索计划

Python 奇维产品搜索计划,python,kivy,kivy-language,Python,Kivy,Kivy Language,您好,这里的程序有一个文本输入框,用户在按下submit按钮后输入一个商标名,例如“Dove”,该按钮连接到pressed()函数。该程序的所有内容实际上都运行良好唯一的问题是在我打印输入品牌的产品后,比如说他输入了不同的品牌,在这种情况下,旧的输出仍然存在,因此程序输出新的产品,旧的产品已经存在。我怎样才能解决这个问题?提前感谢如果没有json数据文件,我无法真正测试它,但请查看以下内容: 从kivy.app导入应用 从kivy.uix.label导入标签 从kivy.uix.gridlayo

您好,这里的程序有一个文本输入框,用户在按下submit按钮后输入一个商标名,例如“Dove”,该按钮连接到pressed()函数。该程序的所有内容实际上都运行良好唯一的问题是在我打印输入品牌的产品后,比如说他输入了不同的品牌,在这种情况下,旧的输出仍然存在,因此程序输出新的产品,旧的产品已经存在。我怎样才能解决这个问题?提前感谢

如果没有
json
数据文件,我无法真正测试它,但请查看以下内容:

从kivy.app导入应用
从kivy.uix.label导入标签
从kivy.uix.gridlayout导入gridlayout
从kivy.uix.textinput导入textinput
从kivy.uix.button导入按钮
导入json
进口稀土
类网格(网格布局):
定义初始(自我,**kwargs):
超级(网格、自组织)。\uuuuu初始化(**kwargs)
#主视图的列
self.cols=1
#从内部开始
self.inside=GridLayout()
self.inside.rows=3
self.inside.add_小部件(标签(text='输入其产品的品牌名称:'))
self.brand_输入=TextInput(多行=False)
self.inside.add_小部件(self.brand_输入)
#将里面的东西添加到主菜单中
self.add_小部件(self.inside)
self.submit=按钮(text='submit',font\u size=20)
self.submit.bind(按=self.press)
self.add_小部件(self.submit)
按下def(自身,实例):
#提交后清除字段
self.brand_input.text=“”
self.inside.clear_widgets()
self.inside.add_小部件(标签(text='输入其产品的品牌名称:'))
self.inside.add_小部件(self.brand_输入)
#拉入文本输入中的文本
品牌名称=self.brand\u input.text
将open('mcg_app/brands.json','r')作为f:
brands_dict=json.load(f)
请求=品牌名称[品牌名称]
修改的\u result=re.sub(r',\s(?![^(]*\)',“\n”,str(请求))
self.inside.add_小部件(标签(文本=修改的_结果))
Mcg级(应用程序):
def生成(自):
返回网格()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
Mcg().run()

它会重置
self.inside
GridLayout
上的每个按钮…

您能提供一个json示例吗?应用程序在运行时不能没有。只需保留对包含结果的
标签的引用即可。然后,您只需替换其
文本
,而无需每次创建一个新的
标签
。非常感谢您的代码解决了这个问题。我需要做的唯一一件事就是在清除小部件之前放置brand_name变量,现在它可以完美地工作了
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
import json
import re

class Grid(GridLayout):

def __init__(self, **kwargs):
    super(Grid, self).__init__(**kwargs)

    # Columns for the main view
    self.cols = 1


    # Start of the Inside
    self.inside = GridLayout()
    self.inside.rows = 3


    self.inside.add_widget(Label(text = 'Enter the Brand Name for its Products: '))
    self.brand_input = TextInput(multiline = False)
    self.inside.add_widget(self.brand_input)


    # Add the things in inside to the main
    self.add_widget(self.inside)


    self.submit = Button(text = 'Submit', font_size = 20)
    self.submit.bind(on_press = self.pressed)
    self.add_widget(self.submit)


def pressed(self, instance):
    # Pull the text inside the textInput
    brand_name = self.brand_input.text

    with open('mcg_app/brands.json', 'r') as f:
        brands_dict = json.load(f)

    request = brands_dict[brand_name]
    modified_result = re.sub(r',\s(?![^(]*\))', "\n", str(request))

    self.inside.add_widget(Label(text = modified_result))

    # Clear out the fields after submitting
    self.brand_input.text = ''





class Mcg(App):

def build(self):
    return Grid()



if __name__ == '__main__':
    Mcg().run()