PyQt4 Web工具包有问题。按钮连接到功能

2024-05-01 23:52:13 发布

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

-PyQt4型 -Python 3.4.2版

我在这里浏览了许多不同的问题,并在网上做了研究。你知道吗

基本上,当我点击“重新加载”按钮时,什么也没发生。即使当我试图让它打印('重新加载')没有出现在控制台上。前进和后退按钮也会发生这种情况。这发生在代码底部的重载函数、前进函数和后退函数中

我对PyQt很陌生

顺便说一下,这段代码还没有完成,gui是在Qt设计器中生成的,并从ui文件转换为py文件

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ApacheUI.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui
from PyQt4 import QtWebKit

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(720, 600)
        MainWindow.setAcceptDrops(False)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8("Apache.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        MainWindow.setAutoFillBackground(False)
        MainWindow.setDocumentMode(False)
        MainWindow.setTabShape(QtGui.QTabWidget.Rounded)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.gridLayout = QtGui.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))

        self.Forward = QtGui.QPushButton(self.centralwidget)
        self.Forward.setObjectName(_fromUtf8("Forward"))
        self.Forward.clicked.connect(lambda: self.Forward)
        self.gridLayout.addWidget(self.Forward, 0, 1, 1, 1)

        self.Back = QtGui.QPushButton(self.centralwidget)
        self.Back.setObjectName(_fromUtf8("Back"))
        self.Back.clicked.connect(lambda: self.Back)
        self.gridLayout.addWidget(self.Back, 0, 0, 1, 1)

        self.Reload = QtGui.QPushButton(self.centralwidget)
        self.Reload.setObjectName(_fromUtf8("Reload"))
        self.Reload.clicked.connect(lambda: self.Reload)
        self.gridLayout.addWidget(self.Reload, 0, 2, 1, 1)

        self.enter = QtGui.QPushButton(self.centralwidget)
        self.gridLayout.addWidget(self.enter, 0, 0, 0, 0)
        self.enter.resize(0, 0)
        self.enter.clicked.connect(self.Enter)
        self.enter.setShortcut("Return")

        self.UrlBar = QtGui.QLineEdit(self.centralwidget)
        self.UrlBar.setObjectName(_fromUtf8("UrlBar"))
        self.gridLayout.addWidget(self.UrlBar, 0, 3, 1, 1)

        self.webView = QtWebKit.QWebView(self.centralwidget)
        self.webView.setUrl(QtCore.QUrl(_fromUtf8("about:blank")))
        self.webView.setObjectName(_fromUtf8("webView"))
        self.gridLayout.addWidget(self.webView, 1, 0, 1, 5)
        MainWindow.setCentralWidget(self.centralwidget)

        self.webView.urlChanged.connect(self.UrlChanged)

        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 720, 21))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        self.menuOptions = QtGui.QMenu(self.menubar)
        self.menuOptions.setObjectName(_fromUtf8("menuOptions"))
        self.menuSearch_Engine = QtGui.QMenu(self.menuOptions)
        self.menuSearch_Engine.setObjectName(_fromUtf8("menuSearch_Engine"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.actionSettings = QtGui.QAction(MainWindow)
        self.actionSettings.setObjectName(_fromUtf8("actionSettings"))
        self.actionDuck_Duck_Go = QtGui.QAction(MainWindow)
        self.actionDuck_Duck_Go.setObjectName(_fromUtf8("actionDuck_Duck_Go"))
        self.actionGoogle = QtGui.QAction(MainWindow)
        self.actionGoogle.setObjectName(_fromUtf8("actionGoogle"))
        self.actionBing = QtGui.QAction(MainWindow)
        self.actionBing.setObjectName(_fromUtf8("actionBing"))
        self.actionQuora = QtGui.QAction(MainWindow)
        self.actionQuora.setObjectName(_fromUtf8("actionQuora"))
        self.actionDogpile = QtGui.QAction(MainWindow)
        self.actionDogpile.setObjectName(_fromUtf8("actionDogpile"))
        self.actionVimeo = QtGui.QAction(MainWindow)
        self.actionVimeo.setObjectName(_fromUtf8("actionVimeo"))
        self.actionBoardreader = QtGui.QAction(MainWindow)
        self.actionBoardreader.setObjectName(_fromUtf8("actionBoardreader"))
        self.actionAsk = QtGui.QAction(MainWindow)
        self.actionAsk.setObjectName(_fromUtf8("actionAsk"))
        self.actionSlide_Share = QtGui.QAction(MainWindow)
        self.actionSlide_Share.setObjectName(_fromUtf8("actionSlide_Share"))
        self.actionAddict_o_matic = QtGui.QAction(MainWindow)
        self.actionAddict_o_matic.setObjectName(_fromUtf8("actionAddict_o_matic"))
        self.actionCreative_Commons = QtGui.QAction(MainWindow)
        self.actionCreative_Commons.setObjectName(_fromUtf8("actionCreative_Commons"))
        self.actionGiphy = QtGui.QAction(MainWindow)
        self.actionGiphy.setObjectName(_fromUtf8("actionGiphy"))

        self.menuSearch_Engine.addAction(self.actionDuck_Duck_Go)
        self.menuSearch_Engine.addAction(self.actionGoogle)
        self.menuSearch_Engine.addAction(self.actionBing)
        self.menuSearch_Engine.addAction(self.actionQuora)
        self.menuSearch_Engine.addAction(self.actionDogpile)
        self.menuSearch_Engine.addAction(self.actionVimeo)
        self.menuSearch_Engine.addAction(self.actionBoardreader)
        self.menuSearch_Engine.addAction(self.actionAsk)
        self.menuSearch_Engine.addAction(self.actionSlide_Share)
        self.menuSearch_Engine.addAction(self.actionAddict_o_matic)
        self.menuSearch_Engine.addAction(self.actionCreative_Commons)
        self.menuSearch_Engine.addAction(self.actionGiphy)
        self.menuOptions.addAction(self.menuSearch_Engine.menuAction())
        self.menubar.addAction(self.menuOptions.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(_translate("MainWindow", "Apache", None))
        self.Forward.setText(_translate("MainWindow", ">", None))
        self.Back.setText(_translate("MainWindow", "<", None))
        self.Reload.setText(_translate("MainWindow", "↻", None))
        self.menuOptions.setTitle(_translate("MainWindow", "Options", None))
        self.menuSearch_Engine.setTitle(_translate("MainWindow", "Search Engine", None))
        self.actionSettings.setText(_translate("MainWindow", "Settings", None))
        self.actionDuck_Duck_Go.setText(_translate("MainWindow", "Duck Duck Go", None))
        self.actionGoogle.setText(_translate("MainWindow", "Google", None))
        self.actionBing.setText(_translate("MainWindow", "Bing", None))
        self.actionQuora.setText(_translate("MainWindow", "Quora", None))
        self.actionDogpile.setText(_translate("MainWindow", "Dogpile", None))
        self.actionVimeo.setText(_translate("MainWindow", "Vimeo", None))
        self.actionBoardreader.setText(_translate("MainWindow", "Boardreader", None))
        self.actionAsk.setText(_translate("MainWindow", "Ask", None))
        self.actionSlide_Share.setText(_translate("MainWindow", "Slide Share", None))
        self.actionAddict_o_matic.setText(_translate("MainWindow", "Addict-o-matic", None))
        self.actionCreative_Commons.setText(_translate("MainWindow", "Creative Commons", None))
        self.actionGiphy.setText(_translate("MainWindow", "Giphy", None))


    def WebPlayer(self):

        url = ""

        self.googleLink = 'https://www.google.com'
        self.duckduckgoLink = 'https://duckduckgo.com/'
        self.duckduckgoSearch = 'https://duckduckgo.com/?q='
        self.bingLink = 'https://www.bing.com/'
        self.quoraLink = 'https://www.quora.com/'
        self.dogpileLink = 'http://www.dogpile.com/'
        self.vimeoLink = 'https://vimeo.com/'
        self.boardreaderLink = 'https://www.boardreader.com/'
        self.askLink = 'http://www.ask.com/'
        self.slideshareLink = 'http://www.slideshare.net/'
        self.addictomaticLink = 'http://addictomatic.com/'
        self.creationcommonsLink = 'https://search.creativecommons.org/'
        self.giphyLink = 'http://giphy.com/'

        self.searchPage = self.duckduckgoLink
        self.searchEngine = self.duckduckgoSearch

    def Enter(self):
        global url

        url = self.UrlBar.text()

        http = "http://"
        www = "www."

        if www in url and http not in url:
            url = http + url

        elif "." not in url:
            url = self.searchEngine + url

        elif http in url and www not in url:
            url = url[:7] + www + url[7:]

        elif http and www not in url:
            url = http + www + url

        self.UrlBar.setText(url)

        self.webView.load(QtCore.QUrl(url))

    def Reload(self):
        self.web.reload()

    def Back(self):
        self.webView.back()

    def Forward(self):
        self.web.forward()

    def UrlChanged(self):
        self.UrlBar.setText(self.webView.url().toString())

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

Tags: selfnonehttpurlwwwenginetranslatesettext
1条回答
网友
1楼 · 发布于 2024-05-01 23:52:13

首先,您对按钮和插槽使用相同的名称,因此当调用setupUi时,前者将隐藏后者。你知道吗

其次,lambda实际上并不调用slot,这就解释了为什么“什么都没发生”。当然,您无论如何也不能真正调用它,因为它被一些不可调用的东西(即对按钮的引用)所遮蔽。请注意,这也解释了您在问题注释中提到的错误消息。你知道吗

我建议您将所有插槽重命名为handleReloadhandleForward等,这样名称就不会冲突。然后应按如下方式连接插槽:

    self.Forward.clicked.connect(self.handleForward)

相关问题 更多 >