{"id":86758,"date":"2023-02-21T11:00:27","date_gmt":"2023-02-21T05:30:27","guid":{"rendered":"https:\/\/techvidvan.com\/tutorials\/?p=86758"},"modified":"2023-02-21T11:00:27","modified_gmt":"2023-02-21T05:30:27","slug":"python-pyqt-tutorial","status":"publish","type":"post","link":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/","title":{"rendered":"Python PyQT Tutorial"},"content":{"rendered":"<p>In this article, we will learn about python pyqt. Let&#8217;s start!!!<\/p>\n<h3>What is PyQT?<\/h3>\n<p><span style=\"font-weight: 400\">One of the most used Python wrappers for the cross-platform C++ framework Qt is PyQt. Riverbank Computing Limited is the creator of PyQt. As a component of the Qt Project, Qt itself is being developed. For versions 4 and 5, PyQt offers bindings. A commercial license or the GPL version 3 are the two licensing options available for PyQt.<\/span><\/p>\n<p><span style=\"font-weight: 400\">PyQt is a toolkit for GUI widgets. A Python interface is available for Qt, one of the best and most widely used cross-platform GUI libraries. PyQt was developed by RiverBank Computing Ltd. The most recent version of PyQt is available from riverbankcomputing.com, the program&#8217;s official website.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The PyQt API is a collection of modules that includes numerous classes and functions. The QtGui module provides all the graphical features, but the QtCore module only contains non-GUI functionality for working with files and directories, etc. There are also modules for working with XML (QtXml), SVG (QtSvg), SQL (QtSql), and other file types. Let&#8217;s learn more about PyQT in this TechVidvan article.<\/span><\/p>\n<h3>Versions of PyQT<\/h3>\n<p><span style=\"font-weight: 400\">There are two versions of PyQt: PyQt4 and PyQt5, both of which support building against Qt 4.x and 5.x respectively. For Python 2 and 3, both editions can be constructed. More than 620 classes in PyQt cover graphical user interfaces, XML handling, network connection, SQL databases, web browsing, and other Qt-compatible technologies.<\/span><\/p>\n<p><span style=\"font-weight: 400\">PyQt is currently at version 5.11.3. It supports Qt 5.11.2 entirely.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Windows, Linux, Mac OS X, and different UNIX platforms all support PyQt4. Both iOS and Android support PyQt5.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">PyQT Supporting Environment<\/span><\/h3>\n<p><span style=\"font-weight: 400\">A virtual environment is the best way to manage dependencies in Python. A local directory with the libraries necessary for a certain project makes up a virtual environment. On the other hand, a system-wide installation of those libraries would have an impact on all of your projects.<\/span><\/p>\n<p><span style=\"font-weight: 400\">All of the widely used operating systems, including Windows, Linux, and Mac OS, are compatible with PyQt. It has both a GPL and a commercial license, making it dual-licensed.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">PyQT for Windows<\/span><\/h4>\n<p><span style=\"font-weight: 400\">From the aforementioned download URL, you can download and set up the proper installer for the hardware architecture and Python version (2.7 or 3.4). (32-bit or 64-bit). Keep in mind that PyQt is available in two different versions: 4.8 and 5.5.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">PyQT for Linux<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Use the following command to install PyQt on Ubuntu or any other Debian Linux distribution:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo apt-get install python-qt4\nor \nsudo apt-get install pyqt5-dev-tools\n<\/pre>\n<h4><span style=\"font-weight: 400\">PyQT for Mac OS<\/span><\/h4>\n<p><span style=\"font-weight: 400\">PyQt for Mac binaries are hosted by the PyQtX project (http:\/\/sourceforge.net\/projects\/pyqtx\/). Use the Homebrew installer by issuing the command below.<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">brew install pyqt<\/pre>\n<h3><span style=\"font-weight: 400\">Creating a PyQt Application<\/span><\/h3>\n<p><span style=\"font-weight: 400\">The instructions below describe how to use PyQt to create a basic GUI application:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Import QtGui module.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Create an application object.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">A QWidget object creates a top-level window. Add a QLabel object to it.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Set the caption of the label as \u201cHi World\u201d.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Define the size and position of the window by setGeometry() method.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Enter the main loop of the application by app.exec_() method.<\/span><\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import sys\nfrom PyQt4 import QtGui\n\ndef window():\n   app = QtGui.QApplication(sys.argv)\n   w = QtGui.QWidget()\n   b = QtGui.QLabel(w)\n   b.setText(\"Hi World\")\n   w.setGeometry(100,100,200,50)\n   b.move(50,20)\n   w.setWindowTitle(\u201cPyQt\u201d)\n   w.show()\n   sys.exit(app.exec_())\n    \nif __name__ == '__main__':\n   window()\n<\/pre>\n<h3><span style=\"font-weight: 400\">Major Classes in PyQt API<\/span><\/h3>\n<p><span style=\"font-weight: 400\">There are numerous classes and methods in the PyQt API. More than 20 modules define these classes. Here are a few of the modules that are used frequently:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtCore<\/strong> &#8211; the fundamental non-GUI classes that other modules use<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtGui<\/strong> &#8211; components of a graphical user interface<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtMultimedia<\/strong> &#8211; Low-level multimedia programming courses<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtNetwork<\/strong> &#8211; Network programming courses<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtOpenGL<\/strong> &#8211; classes that enable OpenGL<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtScript<\/strong> &#8211; Classes for Qt Script evaluation<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtSql<\/strong> &#8211; classes for integrating databases with SQL<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtSvg<\/strong> &#8211; classes for showing SVG files&#8217; contents<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtWebKit<\/strong> &#8211; HTML rendering and editing classes<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtXml<\/strong> &#8211; handling classes XML<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtAssistant<\/strong> &#8211; assistance with internet help<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>QtDesigner<\/strong> &#8211; expanding Qt Designer using classes<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">There are more than 400 classes in the PyQt API. At the top of the class, the hierarchy is the QObject class. It serves as the foundation for all Qt objects. In addition, the basic class for all paintable objects is QPaintDevice.<\/span><\/p>\n<p><span style=\"font-weight: 400\">A GUI application&#8217;s primary settings and control flow are managed by the QApplication class. It has a main event loop where events produced by window elements and other sources are processed and sent to their destinations. Additionally, it manages system- and application-wide settings.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The base class for all user interface objects is QWidget, which is developed from QObject and QPaintDevice classes. The QWidget class also gives rise to the QDialog and QFrame classes. They have their system of subclasses<\/span><span style=\"font-weight: 400\">.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Using Qt Designer<\/span><\/h3>\n<p><span style=\"font-weight: 400\">A GUI building program named Qt Designer is included with the PyQt installer. Without having to write any code, a GUI interface may be quickly developed using its straightforward drag-and-drop interface. However, it is not an IDE like Visual Studio. As a result, Qt Designer cannot build and debug the program.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Signals &amp; Slots<\/span><\/h3>\n<p><span style=\"font-weight: 400\">A GUI-based application is event-driven, as opposed to console-style applications, which run sequentially. Events, such as clicking a button, choosing an item from a collection, or using the mouse, are what cause functions or methods to be executed.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Such events originate from the widgets that were utilized to construct the GUI interface. Every PyQt widget, which is a subclass of QObject, is made to emit a &#8220;signal&#8221; in response to one or more events. The signal doesn&#8217;t do anything on its own. It is &#8220;attached&#8221; to a &#8220;slot&#8221; instead. Any Python function that may be called can be the slot.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Qt&#8217;s signals feature enables you to respond to events like a button click from the user. The example that follows shows this. It has a button that, when pressed, displays the following message box:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">from PyQt5.QtWidgets import *\napp = QApplication([])\nbutton = QPushButton('Click')\ndef on_button_clicked():\n    alert = QMessageBox()\n    alert.setText('You clicked the button!')\n    alert.exec()\n\nbutton.clicked.connect(on_button_clicked)\nbutton.show()\napp.exec()\n<\/pre>\n<h3><span style=\"font-weight: 400\">PyQt Layout Management<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Using absolute coordinates in pixels, a GUI widget can be positioned inside the container window. The coordinates are positioned about the window&#8217;s dimensions as specified by the setGeometry() function.<\/span><\/p>\n<p><span style=\"font-weight: 400\">A PushButton widget is added to the window and positioned 50 pixels to the right of the top left corner and 20 pixels below it.<\/span><\/p>\n<p><span style=\"font-weight: 400\">However, this Absolute Positioning is not appropriate for the following reasons:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Even if the window is shrunk or expanded, the widget&#8217;s location remains unchanged.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">On different display devices with varied resolutions, the appearance might not be consistent.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">It is challenging to change the layout because it can necessitate redesigning the entire form.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">For more elegant handling of widget positioning inside the container, the PyQt API offers layout classes. Layout managers have the following benefits over absolute positioning:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The window&#8217;s widgets are automatically resized.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">guarantees a consistent appearance on displays with various resolutions.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Without redesigning, widgets can be dynamically added or removed.<\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400\">QDialog Class<\/span><\/h3>\n<p><span style=\"font-weight: 400\">A QDialog widget displays a top-level window that is primarily used to solicit user input. It can be set up to be Modeless or Modal (where it blocks its parent window) (the dialogue window can be bypassed).<\/span><\/p>\n<p><span style=\"font-weight: 400\">InputDialog, FileDialog, FontDialog, and other preconfigured Dialog widgets are available in PyQt API.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">QMessageBox<\/span><\/h3>\n<p><span style=\"font-weight: 400\">QMessageBox is a frequently used modal dialogue that shows an informative message and, if desired, prompts the user to respond by clicking one of the on-screen buttons. Each standard button has a predefined role, a predefined hexadecimal number, and a caption.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Drag &amp; Drop in PyQt<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Drag and drop functionality is incredibly user-friendly. The user can copy or transfer things from one window to another in many desktop programs.<\/span><\/p>\n<p><span style=\"font-weight: 400\">QDrag class is the foundation of MIME-based drag-and-drop data transmission. Data are connected to their relevant MIME types using QMimeData objects. It gets copied to the clipboard before being dropped via drag and drop.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Drag and drop functionality is supported by many QWidget objects. Those that permit data dragging have a setDragEnabled() method that needs to be set to true. The widgets, on the other hand, must react to drag-and-drop events to store the data that is dragged into them.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">When a dragging action enters the target widget, DragEnterEvent produces an event that is communicated to that widget.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">When the drag-and-drop operation is in process, DragMoveEvent is used.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">As the drag-and-drop operation exits the widget, a DragLeaveEvent is triggered.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The completion of the drop triggers the DropEvent, on the other hand. The suggested action of the event may be conditionally accepted or refused.<\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400\">Compile your app &#8211; Freezing PyQt programs<\/span><\/h3>\n<p><span style=\"font-weight: 400\">You now possess the fundamental information necessary to develop a GUI that responds to user input. Let&#8217;s say you created an app. On your PC, it operates. How can you pass it on to others so they can operate it too?<\/span><\/p>\n<p><span style=\"font-weight: 400\">You may request that app users install Python and PyQt, as we did above, before distributing your source code. But it&#8217;s incredibly tedious (and usually impractical). We would like a standalone edition of your app. In other words, a binary executable that users may execute directly from their computers without the need to install anything.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Freezing is the term used in the Python community to describe the conversion of source code into a self-contained executable. Even though this problem is addressed by a large number of libraries, like PyInstaller, py2exe, cx Freeze, bbfreze, py2app, etc., freezing PyQt programs has historically been an incredibly challenging issue.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Conclusion<\/span><\/h3>\n<p><span style=\"font-weight: 400\">This TechVidvan tutorial dives right into PyQt, Python&#8217;s wrapper for the well-known Qt library. <\/span><span style=\"font-weight: 400\">We&#8217;ve looked at some of the library&#8217;s core ideas, dived right into using it with Layout Managers, familiarised ourselves with Widgets, and produced several quite basic sample applications that teach you how to use them.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we will learn about python pyqt. Let&#8217;s start!!! What is PyQT? One of the most used Python wrappers for the cross-platform C++ framework Qt is PyQt. Riverbank Computing Limited is the&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":87207,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1053],"tags":[4835,4836],"class_list":["post-86758","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-pyqt-tutorial","tag-python-pyqt"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python PyQT Tutorial - TechVidvan<\/title>\n<meta name=\"description\" content=\"Dive into PyQt, Python&#039;s wrapper for the well-known Qt library. See its supporting Environment, Creating a PyQt Application, Major Classes etc\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python PyQT Tutorial - TechVidvan\" \/>\n<meta property=\"og:description\" content=\"Dive into PyQt, Python&#039;s wrapper for the well-known Qt library. See its supporting Environment, Creating a PyQt Application, Major Classes etc\" \/>\n<meta property=\"og:url\" content=\"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"TechVidvan\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/TechVidvan\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-21T05:30:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/python-pyqt.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"TechVidvan Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:site\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TechVidvan Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python PyQT Tutorial - TechVidvan","description":"Dive into PyQt, Python's wrapper for the well-known Qt library. See its supporting Environment, Creating a PyQt Application, Major Classes etc","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"Python PyQT Tutorial - TechVidvan","og_description":"Dive into PyQt, Python's wrapper for the well-known Qt library. See its supporting Environment, Creating a PyQt Application, Major Classes etc","og_url":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/","og_site_name":"TechVidvan","article_publisher":"https:\/\/www.facebook.com\/TechVidvan\/","article_published_time":"2023-02-21T05:30:27+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/python-pyqt.webp","type":"image\/webp"}],"author":"TechVidvan Team","twitter_card":"summary_large_image","twitter_creator":"@vidvantech","twitter_site":"@vidvantech","twitter_misc":{"Written by":"TechVidvan Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/#article","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/"},"author":{"name":"TechVidvan Team","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22"},"headline":"Python PyQT Tutorial","datePublished":"2023-02-21T05:30:27+00:00","mainEntityOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/"},"wordCount":1562,"commentCount":0,"publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/python-pyqt.webp","keywords":["PyQT tutorial","python PyQT"],"articleSection":["Python Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/","url":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/","name":"Python PyQT Tutorial - TechVidvan","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/#website"},"primaryImageOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/python-pyqt.webp","datePublished":"2023-02-21T05:30:27+00:00","description":"Dive into PyQt, Python's wrapper for the well-known Qt library. See its supporting Environment, Creating a PyQt Application, Major Classes etc","breadcrumb":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/#primaryimage","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/python-pyqt.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2023\/01\/python-pyqt.webp","width":1200,"height":628,"caption":"python pyqt"},{"@type":"BreadcrumbList","@id":"https:\/\/techvidvan.com\/tutorials\/python-pyqt-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/techvidvan.com\/tutorials\/"},{"@type":"ListItem","position":2,"name":"Python PyQT Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/techvidvan.com\/tutorials\/#website","url":"https:\/\/techvidvan.com\/tutorials\/","name":"TechVidvan Blogs","description":"","publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/techvidvan.com\/tutorials\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/techvidvan.com\/tutorials\/#organization","name":"TechVidvan","url":"https:\/\/techvidvan.com\/tutorials\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","width":200,"height":50,"caption":"TechVidvan"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/TechVidvan\/","https:\/\/x.com\/vidvantech"]},{"@type":"Person","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22","name":"TechVidvan Team","description":"The TechVidvan Team delivers practical, beginner-friendly tutorials on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our experts are here to help you upskill and excel in today\u2019s tech industry."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/86758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/comments?post=86758"}],"version-history":[{"count":0,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/86758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media\/87207"}],"wp:attachment":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media?parent=86758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/categories?post=86758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/tags?post=86758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}