Python 1个按钮控制2个不同类别的操作

Python 1个按钮控制2个不同类别的操作,python,qt,pyside,qpushbutton,Python,Qt,Pyside,Qpushbutton,这是一个pyside GUI,我在2个不同的.py文件中创建了2个面板,main.py和sub.py每个面板将显示一个we浏览器“QWebView”。当前,当用户按下main.py上的按钮时,它会将用户重定向到一个页面,例如“www.google”,用户必须单击sub.py上的按钮才能重定向到例如“www.facebook.com”,它们作为独立功能工作 我想问一下,有没有一种方法可以将两者链接在一起,用户按下main.py上的按钮,两个WebBrowser将一起更改 是的,同一个连接可以触发多

这是一个pyside GUI,我在2个不同的.py文件中创建了2个面板,main.py和sub.py每个面板将显示一个we浏览器“QWebView”。当前,当用户按下main.py上的按钮时,它会将用户重定向到一个页面,例如“www.google”,用户必须单击sub.py上的按钮才能重定向到例如“www.facebook.com”,它们作为独立功能工作


我想问一下,有没有一种方法可以将两者链接在一起,用户按下main.py上的按钮,两个WebBrowser将一起更改

是的,同一个连接可以触发多个项目

QObject::connect(myButton, SIGNAL(clicked()), 
                     this,  SLOT(launchGoogleSiteOnBrowserA());
QObject::connect(myButton, SIGNAL(clicked()), 
                     pointerToOtherClass, SLOT(launchFacebookSiteOnBrowserB());

编辑:下面是关于在PyQt中使用信号和插槽的另一个答案

以下是在PyQt中执行此操作的方法:

widget.pyw

from PyQt4 import QtCore, QtGui
from mybrowser import Browser

class Widget(QtGui.QWidget):
    def __init__(self):
        super(Widget, self).__init__()
        self.myButton = QtGui.QPushButton('Open Facebook and Google')
        self.myHLayout = QtGui.QHBoxLayout()

        self.myVLayout = QtGui.QVBoxLayout()
        self.myVLayout.addWidget(self.myButton)

        url = QtCore.QUrl('http://www.yahoo.com')
        self.browserLHS = Browser(url)
        self.browserRHS = Browser(url)

        self.myHLayout.addWidget(self.browserLHS)
        self.myHLayout.addWidget(self.browserRHS)

        QtCore.QObject.connect(self.myButton, QtCore.SIGNAL("clicked()"), self.changePageOnBothBrowsers )

        self.myVLayout.addLayout(self.myHLayout)

        self.setLayout(self.myVLayout)

    def changePageOnBothBrowsers(self):
        self.browserLHS.load(QtCore.QUrl.fromUserInput('google.com'))
        self.browserRHS.load(QtCore.QUrl.fromUserInput('facebook.com'))

if __name__ == '__main__':
    import sys

    app = QtGui.QApplication(sys.argv)

    widget = Widget()
    widget.show()

    sys.exit(app.exec_())
mybrowser.pyw

from PyQt4 import QtCore, QtGui, QtNetwork, QtWebKit

import jquery_rc

class Browser(QtWebKit.QWebView):
    def __init__(self, url):
        super(Browser, self).__init__()

        self.progress = 0

        fd = QtCore.QFile(":/jquery.min.js")

        if fd.open(QtCore.QIODevice.ReadOnly | QtCore.QFile.Text):
            self.jQuery = QtCore.QTextStream(fd).readAll()
            fd.close()
        else:
            self.jQuery = ''

        QtNetwork.QNetworkProxyFactory.setUseSystemConfiguration(True)


        self.load(url)
        self.loadFinished.connect(self.adjustLocation)
        self.titleChanged.connect(self.adjustTitle)
        self.loadProgress.connect(self.setProgress)
        self.loadFinished.connect(self.finishLoading)

        self.locationEdit = QtGui.QLineEdit(self)
        self.locationEdit.setSizePolicy(QtGui.QSizePolicy.Expanding,
                self.locationEdit.sizePolicy().verticalPolicy())
        self.locationEdit.returnPressed.connect(self.changeLocation)

    def adjustLocation(self):
        self.locationEdit.setText(self.url().toString())

    def changeLocation(self):
        url = QtCore.QUrl.fromUserInput(self.locationEdit.text())
        self.load(url)
        self.setFocus()

    def adjustTitle(self):
        if 0 < self.progress < 100:
            self.setWindowTitle("%s (%s%%)" % (self.title(), self.progress))
        else:
            self.setWindowTitle(self.title())

    def setProgress(self, p):
        self.progress = p
        self.adjustTitle()

    def finishLoading(self):
        self.progress = 100
        self.adjustTitle()
        self.page().mainFrame().evaluateJavaScript(self.jQuery)

#if __name__ == '__main__':
#
#    import sys
#
#    app = QtGui.QApplication(sys.argv)
#
#    if len(sys.argv) > 1:
#        url = QtCore.QUrl(sys.argv[1])
#    else:
#        url = QtCore.QUrl('http://www.google.com/ncr')
#
#    browser = Browser(url)
#    browser.show()
#
#    sys.exit(app.exec_())
从PyQt4导入QtCore、QtGui、QtNetwork、QtWebKit
导入jquery\u rc
类浏览器(QtWebKit.QWebView):
定义初始化(self,url):
超级(浏览器,自我)。\uuuu初始化
self.progress=0
fd=QtCore.QFile(:/jquery.min.js)
如果fd.open(QtCore.QIODevice.ReadOnly | QtCore.QFile.Text):
self.jQuery=QtCore.QTextStream(fd).readAll()
fd.close()
其他:
self.jQuery=''
qtnetworkproxyFactory.setUseSystemConfiguration(True)
self.load(url)
自加载完成连接(自调整位置)
self.title更改.connect(self.adjustTitle)
self.loadProgress.connect(self.setProgress)
self.loadFinished.connect(self.finishload)
self.locationEdit=QtGui.QLineEdit(self)
self.locationEdit.setSizePolicy(QtGui.QSizePolicy.Expanding,
self.locationEdit.sizePolicy().verticalPolicy())
self.location编辑.returnPressed.connect(self.changeLocation)
def调整位置(自身):
self.locationEdit.setText(self.url().toString())
def更改位置(自身):
url=QtCore.QUrl.fromUserInput(self.locationEdit.text())
self.load(url)
self.setFocus()
标题(自我):
如果01:
#url=QtCore.QUrl(sys.argv[1])
#其他:
#url=QtCore.QUrl('http://www.google.com/ncr')
#
#浏览器=浏览器(url)
#browser.show()
#
#sys.exit(app.exec_())

希望对您有所帮助。

谢谢您提供的信息,我想知道我是否有两种不同的web浏览器窗口设计,是否需要从两种不同的脚本导入?