2016-07-15 12 views
-1

-PyQt4 -Python 3.4.2Probleme mit PyQt4 Web Kit. Button verbindet dosent

ive einen Blick durch viele verschiedene Fragen hier und online durchgeführte Forschung hatte zu funktionieren.

Grundsätzlich passiert, dass wenn ich auf den Reload Button klicke, nichts passiert. Auch wenn ich versuchte, es zu drucken ("Neu laden"), erscheint nichts auf der Konsole. Dies geschieht auch mit der Vorwärts- und Zurück-Taste. Dies geschieht in der Reload-Funktion, Forward-Funktion und die Funktion Zurück zum Boden des Codes

Im sehr neu PyQt

Durch die Art und Weise dieser Code nicht, wo in der Nähe getan und die gui wurde in Qt Designer gemacht und in eine py-Datei aus einer ui-Datei konvertiert

# -*- 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_()) 
+0

Jeder Grund, den Sie verwenden, verbinden (Lambda: self.Reload) anstatt nur (self.Reload) zu verbinden? –

+0

Ja, wegen dem, was zu dieser Frage gesagt wurde, http://stackoverflow.com/questions/10730131/create-dynamic-button-in-pyqt Ohne es bekomme ich einen Fehler: TypeError: connect() Slot-Argument sollte ein sein Callable oder ein Signal, nicht 'QPushButton' –

Antwort

0

zum einen sind Sie den gleichen Namen für die Schaltfläche und den Steckplatz, so dass, wenn setupUi aufgerufen wird, wird ersterer Schatten.

Zweitens, die lambda nicht eigentlich Anruf der Steckplatz, der erklärt, warum "nichts passiert". Natürlich kann man es nicht wirklich nennen, da es von etwas beschattet wird, das nicht aufrufbar ist (d. H. Ein Verweis auf den Druckknopf). Beachten Sie, dass dies auch die Fehlermeldung erläutert, die Sie in den Kommentaren zu Ihrer Frage angegeben haben.

Ich würde vorschlagen, benennen Sie alle Steckplätze zu etwas wie handleReload, handleForward, etc, so dass die Namen nicht zusammenstoßen. Sie sollten dann die Steckplätze wie folgt verbinden:

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

Danke, es hat funktioniert –