Python webbrowser.open行打开两个标签,当它不应该

时间:2018-01-04 02:36:34

标签: python windows duplicates urllib python-webbrowser

下面我有以下代码,在打开错误的URL后会打开正确的URL。我知道由于打印(链接)输出,链接没有生成两次。所以一个链接在某种程度上打开我的浏览器上的两个选项卡,我不知道为什么。任何想法都将不胜感激!

我在Windows 10上运行python 3.6。

from PIL import Image, ImageEnhance, ImageFilter
import pyscreenshot as ImageGrab
import pytesseract
import webbrowser
import urllib

# I have other code in the middle that is not important

query = textQ
query_encoded = urllib.parse.quote_plus(query)
link = 'http://google.com/search?q='+ query_encoded
print(link)
webbrowser.open_new_tab(link)

编辑1为什么下面的代码会打开两个标签?

from PIL import Image, ImageEnhance, ImageFilter
import pyscreenshot as ImageGrab
import pytesseract
import webbrowser
import urllib


pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-
OCR/tesseract'


if __name__ == "__main__":
    # part of the screen
    img=ImageGrab.grab()
    img.save('screenshot.png')
#-#


query = "textQ"
query_encoded = urllib.parse.quote_plus(query)
link = 'http://google.com/search?q='+ query_encoded
print(link)
webbrowser.open_new_tab(link)

1 个答案:

答案 0 :(得分:0)

当我尝试在文本编辑器中点击链接时,我遇到了同样的问题。我在Windows 10上使用Python 2.7.13,在文本编辑器中使用gtk,我发现事件处理是我问题的原因。

我怀疑您的其他“不重要的代码”可能会导致问题,因为我无法使用您在问题中输入的代码重现错误。我不知道我的问题/解决方案是否适用,但我希望它有所帮助:

问题识别: 我正在处理的文本编辑器检测文本缓冲区和自动保存中的更改。自动保存时,它会将按钮信号连接到hyperlink_clicked_handler。所以我的问题是,只要它自动保存(当我编辑文本时)就完成了与处理程序的新连接。从那时起,单击链接会激活多个处理程序中的信号处理,这会在每个新选项卡中打开URL,从而打开多个选项卡。

<强>解决方案: 在连接处理程序之前检查处理程序是否已连接,以便只连接一个处理程序。

希望这有帮助