繁体   English   中英

Python webbrowser.open行在不应该打开时会打开两个选项卡

[英]Python webbrowser.open line opens two tabs when it is not supposed to

下面,我有以下代码,该代码在打开错误的URL后打开正确的URL。 我知道该链接不会由于print(link)输出而生成两次。 因此,一个链接会以某种方式在浏览器中打开两个选项卡,我不知道为什么。 任何想法将不胜感激!

我在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)

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

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

问题识别:我正在使用的文本编辑器检测到文本缓冲区中的更改并自动保存。 自动保存时,它将按钮按下信号连接到超链接_点击处理程序。 所以我的问题是,只要处理程序自动保存(当我编辑文本时),便会建立与处理程序的新连接。 从那时起,单击链接将激活多个处理程序中的信号处理,这将在每个新选项卡中打开url,从而打开多个选项卡。

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

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM