cannot add custom request headers in pyqt4

  • Last Update :
  • Techknowledgy :

Move the setRawHeader inside createRequest function and it will work. You can send a request here for testing.

def __init__(self, url):
request = QNetworkRequest(QUrl(url))
self.reply = self.get(request)

def createRequest(self, operation, request, data):
   print("mymanager handles ", request.url())
request.setRawHeader('User-Agent', 'Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101')
request.setRawHeader("Accept-Language", "en-us,en;q=0.5");
request.setRawHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
request.setRawHeader("Connection", "keep-alive");
return QNetworkAccessManager.createRequest(self, operation, request, data)

Suggestion : 2

Last modified: Feb 18, 2022, by MDN contributors

Access-Control-Allow-Headers: [<header-name>[, <header-name>]*]
      Access-Control-Allow-Headers: *

Here's an example of what an Access-Control-Allow-Headers header might look like. It indicates that a custom header named X-Custom-Header is supported by CORS requests to the server (in addition to the CORS-safelisted request headers).

Access - Control - Allow - Headers: X - Custom - Header

This example shows Access-Control-Allow-Headers when it specifies support for multiple headers.

Access - Control - Allow - Headers: X - Custom - Header, Upgrade - Insecure - Requests

Although CORS-safelisted request headers are always allowed and don't usually need to be listed in Access-Control-Allow-Headers, listing them anyway will circumvent the additional restrictions that apply.

Access - Control - Allow - Headers: Accept

The preflight request below tells the server that we want to send a CORS GET request with the headers listed in Access-Control-Request-Headers (Content-Type and x-requested-with).

OPTIONS / resource / foo
Access - Control - Request - Method: GET
Access - Control - Request - Headers: Content - Type, x - requested - with
Origin: https: //

If the CORS request indicated by the preflight request is authorized, the server will respond to the preflight request with a message that indicates the allowed origin, methods, and headers. Below we see that Access-Control-Allow-Headers includes the headers that were requested.

HTTP / 1.1 200 OK
Content - Length: 0
Connection: keep - alive
Access - Control - Allow - Origin: https: //
   Access - Control - Allow - Methods: POST, GET, OPTIONS, DELETE
Access - Control - Allow - Headers: Content - Type, x - requested - with
Access - Control - Max - Age: 86400

Suggestion : 3

December 17, 2021 14 min read 3936

# Create virtual environment
python3 - m venv env

# Activate virtual environment
source env / bin / activate

# Install PyQt5
pip install PyQt5

Because our goal is to create the most basic “hello world” GUI, we shall use the QApplication and QWidgets classes only. Start by importing them like so:

from PyQt.QtWidgets
import QApplication, QWidgets

We need to initialize the application by creating an instance of QApplication. It is responsible for managing the application’s main settings and control flow. Therefore, you should instantiate this class before creating any other object related to the user interface.

application = QApplication([])

The window we have created in the previous step is not visible by default. We need to show it by invoking the show method:

Finally, you need to fire up the event loop by invoking the application.exec method:


Suggestion : 4

The PyQt5 Python package will be installed in the directory <DIR>. The default is the Python installation’s site-packages directory. If you use this option then the PYTHONPATH environment variable must include <DIR>.,The QScintilla API file will be installed in the python subdirectory of the api subdirectory of the directory <DIR>.,The PEP 484 type hint stub files for the PyQt5 modules will be installed in the directory <DIR>. By default they will be stored in the same directory as the corresponding extension modules. This option is ignored (and the stub files are not installed) for versions of Python earlier than v3.5.,The Python plugin for Qt Designer will be installed in the directory <DIR>.

pip3 install pyqt5
pip3 uninstall pyqt5
pip3 uninstall pyqt5 - commercial
c: \Python35\ python

Suggestion : 5

If you want to use a QWidget to hold child widgets you will usually want to add a layout to the parent QWidget. See Layout Management for more information.,If your widget only contains child widgets, you probably do not need to implement any event handlers. If you want to detect a mouse click in a child widget call the child's underMouse() function inside the widget's mousePressEvent().,paintEvent() is called whenever the widget needs to be repainted. Every widget displaying custom content must implement it. Painting using a QPainter can only take place in a paintEvent() or a function called by a paintEvent().,If you add a child widget to an already visible widget you must explicitly show the child to make it visible.

width = baseSize().width() + i * sizeIncrement().width();
height = baseSize().height() + j * sizeIncrement().height();
void MainWindow::closeEvent(QCloseEvent * event) {
   if (maybeSave()) {
      event - > accept();
   } else {
      event - > ignore();
QPixmap pixmap(widget - > size());
widget - > render( & pixmap);
QPainter painter(this);
myWidget - > render(this);

Suggestion : 6

To make an HTTP request you must set up suitable HTTP headers. The following example demonstrates how to request the main HTML page from the Qt website (i.e., the URL,The function does not block; instead, it returns immediately. The request is scheduled, and its execution is performed asynchronously. The function returns a unique identifier which is passed by requestStarted() and requestFinished().,The class works asynchronously, so there are no blocking functions. If an operation cannot be executed immediately, the function will still return straight away and the operation will be scheduled for later execution. The results of scheduled operations are reported via signals. This approach depends on the event loop being in operation.,Returns true if there are any requests scheduled that have not yet been executed; otherwise returns false.

To make an HTTP request you must set up suitable HTTP headers. The following example demonstrates how to request the main HTML page from the Qt website (i.e., the URL

 QHttpRequestHeader header("GET", QUrl.toPercentEncoding("/index.html"));
 header.setValue("Host", "");
 http - > setHost("");
 http - > request(header);

For the common HTTP requests GET, POST and HEAD, QHttp provides the convenience functions get(), post() and head(). They already use a reasonable header and if you don't have to set special header fields, they are easier to use. The above example can also be written as:

 http - > setHost(""); // id == 1
 http - > get(QUrl.toPercentEncoding("/index.html")); // id == 2

For this example the following sequence of signals is emitted (with small variations, depending on network traffic, etc.):

 requestFinished(1, false)

 dataSendProgress(77, 77)
 dataReadProgress(5388, 0)
 dataReadProgress(18300, 0)
 requestFinished(2, false)



and the get() request fails because the host lookup fails, then the post() request is never executed and the signals would look like this:

 requestFinished(1, false)

 requestFinished(2, true)


 void Ticker.getTicks() {
    http = new QHttp(this);
    connect(http, SIGNAL(done(bool)), this, SLOT(showPage()));
    http - > setProxy("", 3128);
    http - > setHost("");
    http - > get("/ticks.asp");

 void Ticker.showPage() {
    display(http - > readAll());