首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我的提交按钮在我的while循环中不工作时,我如何摆脱这个while循环?

当我的提交按钮在我的while循环中不工作时,我如何摆脱这个while循环?
EN

Stack Overflow用户
提问于 2021-08-04 14:58:01
回答 1查看 69关注 0票数 0
代码语言:javascript
复制
@app.route("/MODBUS", methods=["GET","POST"])
def mod():
     if request.method == "POST":
          setup.slave_id= request.form.get("slave_id",type=int)
          setup.port = request.form.get("port",type=str)
          setup.baudrate= request.form.get("baud_rate",type=int)
          setup.num_registers= request.form.get("registers",type=int)
          setup.timeout= request.form.get("timeout",type=int)
          
          
          print(setup.slave_id)
          print(setup.port)
          print(setup.baudrate)
          print(setup.num_registers)
          print(setup.timeout)
          setup.setup_modbus()
          
          state= request.form.get("start_button")
          state1= request.form.get("stop_button")
          
          
          while(str(state) == "START"):
               print(state)
               openapplib.open_app_modbus()
               startapplib.start_app_modbus()
               if(str(state1) == "STOP"):
                    break
                    print(state1)
                    closeapplib.close_app_modbus()
 
return render_template("modbus.html") 

我正在运行这个烧瓶服务器,在这里我使用html表单来提交和更新另一个python安装文件中的值。在HTML文件中,我使用"START“和"STOP”作为输入来调用上面的函数。但是,当我在while中时,当我单击start和stop时,它不会调用if(str(state1) ==“stop”)中的STOP函数。

这是我的HTML文件

代码语言:javascript
复制
<h1>MODBUS SETTINGS</h1>

<form name="form1" id="form1" method="POST">
SLAVE_ID: <select name="slave_id" id="slave_id">
    <option value="" selected="selected">Select Slave-ID</option>
  </select>
  <br><br>
PORT: <select name="port" id="port">
    <option value="" selected="selected">Select No of Port</option>
  </select>
  <br><br>
REGISTERS: <select name="registers" id="registers">
    <option value="" selected="selected">Select No of Registers</option>
  </select>
  <br><br>
BAUD_RATE: <select name="baud_rate" id="baud_rate">
    <option value="" selected="selected">Select Baud-Rate</option>
  </select>
  <br><br>
TIMEOUT: <select name="timeout" id="timeout">
    <option value="" selected="selected">Select Timeout</option>
  </select>
  <br><br>
  <input type="submit" value="SETUP"/>  
  <br><br>
  <input type="submit" name="start_button" value="START">
  <br><br>
  <input type="submit" name="stop_button" value="STOP">
  <br><br>
  <input type="button" value="BACK" onclick="history.back()">
  <br><br>
</form>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-04 16:42:38

当窗体上有多个提交按钮时,我相信只有单击的按钮才会发送到服务器。[https://www.coderslexicon.com/using-multiple-submit-buttons-with-a-single-form/

从您的代码中,当您单击start时,只发送该按钮,然后开始执行while循环。单击stop时,只发送该值。start从不发送,这意味着您的条件while(str(state) == "START"):从未被触发,因此您的stop无法工作。

不要使用while循环,而是在前端使用线程和一些javascript代码。

  1. 停止被隐藏或禁用,直到单击“开始”按钮

当您单击“开始”按钮时,

  1. 将启动一个单独的线程来处理处理服务器端,并将控制返回到窗体。当开始按钮隐藏或禁用

时,停止按钮将被启用或变为可见。

  1. 当用户单击“停止”按钮时,然后停止线程或函数服务器端,然后重新启用“

”按钮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68653538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档