Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让人在执行命令之前输入内容(Tkinter、Python、Selenium)_Python_Selenium_Tkinter - Fatal编程技术网

让人在执行命令之前输入内容(Tkinter、Python、Selenium)

让人在执行命令之前输入内容(Tkinter、Python、Selenium),python,selenium,tkinter,Python,Selenium,Tkinter,警告=这会导致无限循环关闭程序退出 所以我想知道伙计们。你知道有些表格,如果你不填写一个字段。比如你的名字。它会显示一个消息框,说你没有输入你的名字,然后你退出该消息框,然后填写你的名字,点击提交后,消息框将不再弹出 现在我的问题是我们如何重新创造它 我上面的剧本就是这样的。但是将永远循环,并且不允许用户返回并将其名称放在名称输入框中 还将此while循环更改为if: from tkinter import * from selenium import webdriver class Pract

警告=这会导致无限循环关闭程序退出

所以我想知道伙计们。你知道有些表格,如果你不填写一个字段。比如你的名字。它会显示一个消息框,说你没有输入你的名字,然后你退出该消息框,然后填写你的名字,点击提交后,消息框将不再弹出

现在我的问题是我们如何重新创造它

我上面的剧本就是这样的。但是将永远循环,并且不允许用户返回并将其名称放在名称输入框中

还将此while循环更改为if:

from tkinter import *
from selenium import webdriver
class Practice():
    def __init__(self):

        self.name = StringVar()

        self.nameLabel = Label(root, text="Name")
        self.nameEntry = Entry(root, textvariable= self.name)

        self.submitButton = Button(root,text="Submit",command=self.submit)

        self.nameLabel.pack()
        self.nameEntry.pack()
        self.submitButton.pack()


    def submit(self):

        while self.name.get() == "":
            messagebox.showerror(title="No name",message="No name")
        driver = webdriver.Firefox()
        driver.get("http://stackoverflow.com/")


root = Tk()
b= Practice()
root.mainloop()
不会导致infinte循环,但仍会执行以下命令:

def submit(self):

            if self.name.get() == "":
                messagebox.showerror(title="No name",message="No name")
            driver = webdriver.Firefox()
            driver.get("http://stackoverflow.com/")
TL:DR
如果name entrybox为空,我们如何防止命令被执行?如何防止messagebox永远循环?

只需检查一次。每次用户单击submit按钮时,将再次执行检查

driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/")

这里的键是
return
。此外,如果不是self.name.get(),则检查可以是
@TigerhawkT3哦,所以这就是您的方法。该死,我漏掉了一个词,那就是
return
。这里到底返回了什么?什么都没有(字面意思是,
None
)。您只希望函数结束于此。@TigerhawkT3 woah ok。伙计,我需要学习更多关于python的知识,非常感谢。因此,如果返回none,那么它旁边的命令将不会执行?我从来不知道
return
语句会结束函数,将某个东西(或
None
,如这里所示)返回给任何调用它的对象。例如,
webdriver.Firefox()
返回某种类型的驱动程序,并将其另存为
driver
。在这里,它只是停止函数,因为向
tkinter
小部件返回值通常没有意义。
def submit(self):

    if self.name.get() == "":
        messagebox.showerror(title="No name",message="No name")
        return

    driver = webdriver.Firefox()
    driver.get("http://stackoverflow.com/")