Ich habe ein Pyqt-Skript erstellt, das Skript wurde bereits von mir selbst erstellt, aber gestern habe ich angefangen, pyqt zu lernen und habe gerade eine Funktion aus meinem Skript implementiert, aber es stürzt kurz nachdem die Funktion aufgerufen wird. Ich bin Anfänger mit pyqt, also stimme ich zu, dass das Format schlecht sein könnte. HierPyQt5-Code schlägt fehl, wenn eine bestimmte Funktion startet
ist der Code:
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
from lxml import html
import requests
class Ui_ShopifyFeeder(object):
def started(self):
print("STARTED...\n")
resp = requests.get('https://www.google.com/', headers=headers)
print(resp.content)
def setupUi(self, ShopifyFeeder):
ShopifyFeeder.setObjectName("ShopifyFeeder")
ShopifyFeeder.resize(423, 105)
self.gridLayout = QtWidgets.QGridLayout(ShopifyFeeder)
self.gridLayout.setObjectName("gridLayout")
self.constant_value = QtWidgets.QLineEdit(ShopifyFeeder)
self.constant_value.setEnabled(True)
self.constant_value.setObjectName("constant_value")
self.gridLayout.addWidget(self.constant_value, 1, 0, 1, 1)
self.percentage_value_selection = QtWidgets.QRadioButton(ShopifyFeeder)
self.percentage_value_selection.setObjectName("percentage_value_selection")
self.gridLayout.addWidget(self.percentage_value_selection, 2, 1, 1, 1)
self.percentage_value = QtWidgets.QLineEdit(ShopifyFeeder)
self.percentage_value.setObjectName("percentage_value")
self.gridLayout.addWidget(self.percentage_value, 2, 0, 1, 1)
self.constant_value_selection = QtWidgets.QRadioButton(ShopifyFeeder)
self.constant_value_selection.setObjectName("constant_value_selection")
self.gridLayout.addWidget(self.constant_value_selection, 1, 1, 1, 1)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.starter = QtWidgets.QPushButton(ShopifyFeeder)
self.starter.clicked.connect(self.started)
self.starter.setAutoFillBackground(False)
self.starter.setObjectName("starter")
self.verticalLayout.addWidget(self.starter)
self.gridLayout.addLayout(self.verticalLayout, 3, 0, 1, 2)
self.retranslateUi(ShopifyFeeder)
self.starter.clicked['bool'].connect(ShopifyFeeder.setEnabled)
self.starter.clicked['bool'].connect(self.constant_value.setEnabled)
self.constant_value_selection.clicked['bool'].connect(self.constant_value.setDisabled)
self.percentage_value_selection.clicked['bool'].connect(self.percentage_value.setDisabled)
self.constant_value_selection.clicked['bool'].connect(self.percentage_value_selection.setDisabled)
self.constant_value_selection.clicked['bool'].connect(self.percentage_value.setDisabled)
self.percentage_value_selection.clicked['bool'].connect(self.constant_value.setDisabled)
self.percentage_value_selection.clicked['bool'].connect(self.constant_value_selection.setDisabled)
QtCore.QMetaObject.connectSlotsByName(ShopifyFeeder)
def retranslateUi(self, ShopifyFeeder):
_translate = QtCore.QCoreApplication.translate
ShopifyFeeder.setWindowTitle(_translate("ShopifyFeeder", "ShopifyFeeder"))
self.percentage_value_selection.setText(_translate("ShopifyFeeder", "Percentage"))
self.constant_value_selection.setText(_translate("ShopifyFeeder", "Constent"))
self.starter.setText(_translate("ShopifyFeeder", "Start"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
ShopifyFeeder = QtWidgets.QWidget()
ui = Ui_ShopifyFeeder()
ui.setupUi(ShopifyFeeder)
ShopifyFeeder.show()
sys.exit(app.exec_())
So sobald gestartet Funktion/Methode aufgerufen wird, Skript stürzt nach print-Anweisung. Es wäre schön, wenn ich Informationen darüber hätte, was falsch ist.
HINWEIS: Dieser Code funktioniert, aber er öffnet einen Link in meinem Browser, während ich möchte, dass er genauso funktioniert wie Anfragen und einfache Python-Skripte.
def started(self):
print("STARTED...\n")
url = QtCore.QUrl('https://www.yahoo.com/')
if not QtGui.QDesktopServices.openUrl(url):
QtGui.QMessageBox.warning(self, 'Open Url', 'Could not open url')
Okay, ich versuchte es erneut mit dieser neuen Methode und stürzt immer noch Skript ab.
def loadPage(self):
print("STARTED...\n")
page = QtWebKit.QWebPage()
loop = QtCore.QEventLoop() # Create event loop
page.mainFrame().loadFinished.connect(loop.quit) # Connect loadFinished to loop quit
page.mainFrame().load('https://www.yahoo.com/')
loop.exec_() # Run event loop, it will end on loadFinished
print(page.mainFrame().toHtml())