重复的小工具ID:streamlit



我收到这个错误:

DuplicateWidgetID:存在多个键为"1"的相同st.button小部件。

若要解决此问题,请确保键参数对于您创建的每个st.button都是唯一的。

我该如何解决这个

def Breccia_Predictions():
image_=pre_process()
model = tf.keras.models.load_model(model_path)
prediction_steps_per_epoch = np.math.ceil(image_.n / image_.batch_size)
image_.reset()
Breccia_predictions = model.predict_generator(image_, steps=prediction_steps_per_epoch, verbose=1)
predicted_classes = np.argmax(Breccia_predictions, axis=1)
return Predicted_classes



def main():
image_file=st.file_uploader('upload a breccia rock', type=['png', 'jpg', 'jpeg'], accept_multiple_files=True,)
if image_file is not None:
for image in image_file:
file_details = {"FileName":image.name,"FileType":image.type}
st.write(file_details)
img = load_image(image)
st.image(img)
#saving file
with open(os.path.join("Breccia", image.name),"wb") as f: 
f.write(image.getbuffer())         
st.success("Saved File")
if(st.button('Predicted', key = count)):
predicted=Breccia_Predictions

您可以更进一步,使用python生成器来管理它。例如:

widget_id = (id for id in range(1, 100_00))
for image in image_file:
# Do things here
if(st.button('Predicted', key=next(widget_id):
# your stuff

现在您不必手动递增!

您可以处理多个图像。

for image in image_file:

你有:

if(st.button('Predicted', key = count)):

您的密钥只有count。如果有一个以上的图像,则下一个按钮键仍然是count

要解决这个问题,请创建一些变量,按图像递增,并在按钮键中使用此变量。示例:

cnt = 0
for image in image_file:
cnt += 1
# your stuff
if(st.button('Predicted', key=f'{count}_{cnt}')):
# your stuff

按键现在是唯一的,因为cnt是唯一的[1,2,…]

相关内容

  • 没有找到相关文章

最新更新