点击选项卡中的Python PyQt QWebView加载站点

时间:2015-04-15 06:36:10

标签: python tabs pyqt pyqt4 qwebview

我需要你的帮助!

情况:我有不同的标签,并在一个标签["Support"-Tab]中我想使用QWebView小部件。 但是,当我点击此标签时,网站应首先加载:

  

main.py

import sys
from PyQt4 import QtCore, QtGui, QtWebKit
from tab-file import Support

class Widget(QtGui.QWidget):

    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)

        self.createTabs()

        widgetLayout = QtGui.QVBoxLayout()
        widgetLayout.addWidget(self.tabs)
        self.setLayout(widgetLayout)

        self.setWindowTitle("Tabs")
        self.resize(400,400)


    def createTabs(self):
        self.tabs = QtGui.QTabWidget()

        support = Support()

        tab1 = QtGui.QWidget()
        tab2 = support

        self.tabs.addTab(tab1,"tab1")
        self.tabs.addTab(tab2,"SUPPORT")

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

我从此文件加载"Support"-Tab

  

tab-file.py

import sys
from PyQt4 import QtGui, QtCore, QtWebKit


class Support(QtGui.QWidget):

    def __init__(self, parent=None):
        super(Support, self).__init__(parent)

        self.supportTab()


    def supportTab(self):

        view = QtWebKit.QWebView()

        url = "http://www.google.com"
        view.load(QtCore.QUrl(url))

        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(view)

        self.setLayout(vbox)

请告诉我如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:2)

main.py中的

使tab2可寻址,并添加代码以收听制表符更改事件:

    #...
    self.tab2 = support

    self.tabs.addTab(tab1,"tab1")
    self.tabs.addTab(self.tab2,"SUPPORT")
    #
    self.tabs.currentChanged.connect(self.load_on_show)

然后添加动作

def load_on_show(self):
    idx = self.tabs.currentIndex()
    if idx == 1:
        url = "http://www.google.com"
        print url
        self.tab2.load_url(url)

最后,在tab_file.py [我不能使用破折号,必须使用下划线!]:

再次view可寻址(self.view)并添加代码

def load_url(self, url):
    self.view. load(QtCore.QUrl(url))

这有帮助吗?