所以我今天正在调试我的一些代码,并注意到输出中有一条新消息:
can't invoke "event" command: application has been destroyed
while executing
"event generate $w <<ThemeChanged>>"
(procedure "ttk::ThemeChanged" line 6)
invoked from within
"ttk::ThemeChanged"
我在SO上查看了有关它的问题,但它们确实与此错误实例有关。至于ttk小部件,我没有在我的代码中使用过ttk,搜索字符串&#34; ttk&#34;在我的代码中没有产生。
输出此代码的代码块:
def GoToEvent(self, controller, driver):
wait = WebDriverWait(driver, 600)
var = Vars()
entertain = var.GetVars("Link")
if type(entertain) == type(""):
event = var.GetVars("Event")
entertain = driver.find_element_by_partial_link_text(event)
entertain.click()
try:
# we have to wait for the page to refresh, the last thing that seems to be updated is the title
wait.until(EC.title_contains("Entertain"))
finally:
# the page is ajaxy so the title is originally this:
msg = driver.title
label = tk.Label(self, text=msg, cursor='spinning', font="courier 24", bg="#c63f17")
label.place(x=self.winfo_width()/2, y=self.winfo_height()/2, anchor="center")
self.update() # <--- This is where the problem is
label.destroy()
这似乎并没有真正抛出任何错误,我的代码运行得非常好。我无法提供足够的代码来重新定位问题,因为在此之前它只是太多的代码,但我可以告诉你如果有帮助的话我做的所有测试。我调试了这个代码块,发现在label.destroy()
添加一个断点仍然会出现这个错误,但是在之前的任何地方放置并转到label.destroy()
都不会打印出来,导致我认为它是某种类型self.update()
的时间错误,但当我在time.sleep(5)
之前和之后放置self.update()
时,错误仍然存在。因此,单步执行代码并未显示错误,但time.sleep()仍显示错误。这让我很困惑,我不知道为什么会这样做,我已经写了这个程序2周了,这是第一次发生这种情况。如果没有人知道它很好,代码仍然运行良好,我只是好奇这意味着什么以及它为什么会发生。谢谢!
代码开头:
# !/usr/bin/python
# coding: utf-8
'''
Created on Jun 23, 2017
@author: jacob <---------------- Line 6
'''
from selenium import webdriver
#from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import os
import platform
import pwd
import re
import time
#import datetime
from time import strftime
import Tkinter as tk
import tkFont as tkfont
from Tkinter import Entry, Menu, Menubutton, Canvas
答案 0 :(得分:0)
所以这是一个非常难以找到的错误,因为调试从未指向正确的代码区域,我必须通过代码阅读以试图找到一些东西。因此,程序获取关键字的用户输入,然后搜索包含该关键字的事件的网站,然后将它们放入下拉菜单中。如果关键字只有一个或没有出现,则不会显示任何菜单,它会点击该事件,或者提示用户提供最接近其关键字的建议事件。这似乎是发生此错误的可能区域,因为它仅在没有显示菜单时发生。代码来自:
if (len(options) > 1):
button6 = tk.Button(selectMenu, text="Enter",
cursor='pointinghand', command=lambda: self.GetSelection(str(var.GetVars("Selection")), links, options, selectMenu, controller))
msg = "Which one would you like to attend?"
label = tk.Label(selectMenu, text=msg, font="Helvedica 14")
label.pack(side='top', pady=10)
menbutton.pack(side="top", pady=10)
button6.pack(pady=10)
self.Progress()
selectMenu.attributes('-topmost', True)
selectMenu.mainloop()
elif options:
var.SendVars("selLink", links[0])
selectMenu.destroy()
self.Progress()
else:
var.SendVars("Link", 'NO-LINK-FOUND')
selectMenu.destroy()
self.Progress()
事实证明,这个错误是由一个在tk窗口中创建的Menubutton引起的,但是从未到达主循环,即使它被破坏了。到达另一个tk窗口的主循环时抛出错误。所以要解决这个问题,你可以将Menubutton的创建移动到一个可以到达它的主循环的地方,如下所示。