首页 > 解决方案 > 运行代码后弹出第二个 tkinter 小部件

问题描述

这是我卡住的地方:

root = Tk()
e = Entry(root, width = 50)
l = Label(root, text = 'Enter your phone number')
l.pack()
e.pack()
def myClick():
    global a
    a = e.get()
    root.destroy()
myButton = Button(root, text = 'Enter', command = myClick)
myButton.pack()
root.mainloop()
def randomString(stringLength=3):
    letters = string.ascii_lowercase
    return 'hbgvfc' + ''.join(random.choice(letters) for i in range(stringLength))
browser = webdriver.Chrome('C:\\Users\memet\Desktop\Projects\chromedriver')
def fillaccount1():
    browser.get('https://accounts.google.com/signup/v2/webcreateaccount?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Fpc%3Dtopnav-about-n-en&flowName=GlifWebSignIn&flowEntry=SignUp')
    next = browser.find_element_by_xpath('//*[@id="accountDetailsNext"]/span/span')
    name1 = browser.find_element_by_xpath('//*[@id="firstName"]')
    name2 = browser.find_element_by_xpath('//*[@id="lastName"]')
    username = browser.find_element_by_xpath('//*[@id="username"]')
    password = browser.find_element_by_xpath('//*[@id="passwd"]/div[1]/div/div[1]/input')
    password_confirm = browser.find_element_by_xpath('//*[@id="confirm-passwd"]/div[1]/div/div[1]/input')
    name1.send_keys(randomString())
    name2.send_keys(randomString())
    username.send_keys(randomString())
    password.send_keys('nhbgvf')
    password_confirm.send_keys('bhgvfcd')
    next.click()
    browser.implicitly_wait(10)
    number = browser.find_element_by_xpath('//*[@id="phoneNumberId"]')
    next2 = browser.find_element_by_xpath('//*[@id="gradsIdvPhoneNext"]/span/span')
    number.send_keys(a)
    next2.click()
    code = browser.find_element_by_xpath('//*[@id="code"]')

我希望小部件在运行上一行代码后立即弹出,然后在接收到用户输入后关闭以运行下一行:

code.send_keys(c)
    next0 = browser.find_element_by_xpath('//*[@id="gradsIdvVerifyNext"]/span/span')
    next0.click()

使用与第一个弹出窗口相同的方法创建一个新弹出窗口会给我一个“TclError:无法调用“destroy”命令:应用程序已被破坏”错误。有没有办法让第二个窗口像第一个一样弹出?

标签: pythontkinter

解决方案


def myClick():方法销毁根窗口 ( root.destroy())。这就是为什么不能显示第二个窗口的原因。您需要保持 root 处于活动状态(或创建一个新的)。


推荐阅读