PyQT QTabWidget当前已更改

2024-05-12 22:15:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试构建一个小应用程序,在一个QTabWidget中加载几个网页。这已经很有效了。现在我希望在更改当前选项卡时重新加载tabs/qwebview。

我认为函数“onChange”与currentChanged事件的连接有问题。

这是我的代码:



    #!/usr/bin/env python

    import sys, os
    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from PyQt4.QtWebKit import *
    from PyQt4.QtNetwork import *
    from PyQt4 import QtCore, QtGui, QtWebKit
    from PyQt4.QtWebKit import QWebView


    class BaseWindow(QtGui.QMainWindow):
        def __init__(self, parent = None):
            QtGui.QMainWindow.__init__(self, parent)
            self.centralWidget = QtGui.QWidget()
            self.resize(800, 500)
            self.setWindowTitle('Test')
            self.tabs = QTabWidget()
            #self.tabs.connect(self.tabs,SIGNAL("currentChanged(int)"),self,SLOT("onChange(int)")) #tabs,SLOT("tabChangedSlot(int)")
            #self.tabs.currentChanged.connect(self.onChange)


            self.webview = QWebView()
            self.webview.load(QUrl("http://gmx.de"))

            self.webview2 = QWebView()
            self.webview2.load(QUrl("http://web.de"))

            centralLayout = QtGui.QVBoxLayout()
            centralLayout.addWidget(self.tabs, 1)

            self.tabs.addTab(self.webview, "gmx")
            self.tabs.addTab(self.webview2, "web")
            self.centralWidget.setLayout(centralLayout)

            self.setCentralWidget(self.centralWidget)

        #@pyqtSlot()  
        def onChange(self):
            QtGui.QMessageBox.information(self,
                      "Tab Index Changed!",
                      "Current Tab Index: ");





    if __name__ == '__main__':
        app = QtGui.QApplication(sys.argv)
        window = BaseWindow()
        window.show()
        sys.exit(app.exec_())

我希望你能帮我解决我的问题!谢谢!


Tags: fromimportselfsysintpyqt4tabsqtgui
0条回答
网友
1楼 · 发布于 2024-05-12 22:15:56

请在此处检查代码所需的更改:

import sys, os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from PyQt4.QtNetwork import *
from PyQt4 import QtCore, QtGui, QtWebKit
from PyQt4.QtWebKit import QWebView


class BaseWindow(QtGui.QMainWindow):
    def __init__(self, parent = None):
        QtGui.QMainWindow.__init__(self, parent)
        self.centralWidget = QtGui.QWidget()
        self.resize(800, 500)
        self.setWindowTitle('Test')
        self.tabs = QTabWidget()

        self.tabs.blockSignals(True) #just for not showing the initial message
        self.tabs.currentChanged.connect(self.onChange) #changed!


        self.webview = QWebView()
        self.webview.load(QUrl("http://gmx.de"))

        self.webview2 = QWebView()
        self.webview2.load(QUrl("http://web.de"))

        centralLayout = QtGui.QVBoxLayout()
        centralLayout.addWidget(self.tabs, 1)

        self.tabs.addTab(self.webview, "gmx")
        self.tabs.addTab(self.webview2, "web")
        self.centralWidget.setLayout(centralLayout)

        self.setCentralWidget(self.centralWidget)

        self.tabs.blockSignals(False) #now listen the currentChanged signal


    #@pyqtSlot()  
    def onChange(self,i): #changed!
        QtGui.QMessageBox.information(self,
                  "Tab Index Changed!",
                  "Current Tab Index: %d" % i ) #changed!

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = BaseWindow()
    window.show()
    sys.exit(app.exec_())

相关问题 更多 >