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

时间:2015-05-26 01:01:36

标签: python selenium tkinter

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()

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

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

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

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

同时将此循环更改为if:

def submit(self):

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

不会导致infinte循环,但仍会执行命令:

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

TL:DR 如果名称输入框为空,我们如何阻止执行命令以及如何防止消息框永远循环?

1 个答案:

答案 0 :(得分:1)

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

f.readline()