使用pyQt单击按钮时按特定顺序打开网址

open urls in a certain order when clicking a button using pyQt

我正在尝试使用 pyQt 构建一个 url opener。一切都很好,但是当我尝试一次打开多个 URL 时,它们会无序打开。例如我 运行 类似于下面的代码

def UK_N(self):
    if self.txt_S_UK.text() != '':
        url = 'url1'
        webbrowser.open(url)

def FR_N(self):
    if self.txt_S_FR.text() != '':
        url = 'url2'
        webbrowser.open(url)

def DE_N(self):
    if self.txt_S_DE.text() != '':
        url = 'url3'
        webbrowser.open(url)


def Open_N(self):
    if self.box_N_UK.isChecked() == True:
        self.UK_N()
    if self.box_N_FR.isChecked() == True:
        self.FR_N()
    if self.box_N_DE.isChecked() == True:
        self.DE_N()


self.btn_N_Open.clicked.connect(lambda: self.Open_N())

我得到的是 3 个选项卡,第一个是 url3,第二个是 url1,第三个是 url2。有没有办法让它们按照我编程的顺序出现?

这似乎取决于您无法控制的外部进程。理想情况下,您会打开第一个 url,等待它已加载的通知,然后打开下一个 url,依此类推。但是当然,没有这样的通知,所以这似乎是不可能的。

显然,选项卡的顺序取决于资源的性质,因为它们是异步加载的,有些加载速度可能比其他加载快得多。但是,您可以尝试通过使用计时器引入一个小的延迟来从您的程序中控制一些事情:

    QtCore.QTimer.singleShot(200, lambda: webbrowser.open(url))

如果这不起作用,我不会感到惊讶...