Перейти к содержимому

Pyqt5 stubs что это

  • автор:

Pyqt5 stubs что это

To install this package run one of the following:
conda install conda-forge::pyqt-stubs

Description

The stub files released within the PyQt5 packages have been modified to allow using them for type-checking via mypy. Improvements over the default stubs include: Signals are properly typed as signals and not as methods QFlags derived classes correctly support all combination operations Many methods accepting an optional None have been annotated so

By data scientists, for data scientists

Mypy stubs for the PyQt5 framework

This repository holds the stubs of the PyQt5 framework. The stub files released within the PyQt5 packages have been modified to allow using them for type-checking via mypy. Improvements over the default stubs include:

  • Signals are properly typed as signals and not as methods
  • QFlags derived classes correctly support all combination operations
  • Many methods accepting an optional None have been annotated so
  • and more.

This repository can always be improved and the authors will appreciate any PRs or Issues that help making this stub-repository more reliable.

Installation

Simply install PyQt5-stubs with pip:

$ pip install PyQt5-stubs 

Or clone the latest version from Github and install it via Python setuptools:

$ git clone https://github.com/python-qt-tools/PyQt5-stubs $ python setup.py install 

Supported Modules

The modules supported by PyQt5-stubs include modules from the PyQt5 package as well as modules from the other packages released by Riverbank Computing (PyQt3D, PyQtCharts, . ). Here is the full list of packages and modules:

  • package PyQt5:
    • QtBluetooth
    • QtCore
    • QtDBus
    • QtGui
    • QtLocation
    • QtMultimedia
    • QtNetwork
    • QtNfc
    • QtOpenGL
    • QtPositioning
    • QtPrintSupport
    • QtQml
    • QtQuick
    • QtQuickWidgets
    • QtRemoteObjects
    • QtSensors
    • QtSerialPort
    • QtSql
    • QtSvg
    • QtTest
    • QtWebChannel
    • QtWebSockets
    • QtWidgets
    • QtX11Extras
    • QtXml
    • QtXmlPatterns
    • sip
    • Qt3DAnimation
    • Qt3DCore
    • Qt3DExtras
    • Qt3DInput
    • Qt3DLogic
    • Qt3DRender
    • QtChart
    • QtDataVisualization
    • QtNetworkAuth
    • QtPurchasing
    • QtWebEngine
    • QtWebEngineCore
    • QtWebEngineWidgets
    • QtWebKit
    • QtWebKitWidgets

    Authors

    • Stefan Lehmann
    • Kyle Altendorf
    • Bryce Beagle
    • Florian Bruhin
    • Philippe Fremy

    Нужна методология разработки кода GUI

    Тут подойдёт гибкая методология разработки (agile). Сделай как понял и покажи заказчику. Обсудите и уточните, что же должно быть.

    fluorite ★★★★★
    ( 06.05.22 21:05:21 MSK )

    • Ответить на это сообщение
    • Показать ответы
    • Ссылка

    в таких гуях ты рисуешь в canvas — то есть обьект класса холст. он никуда не исчезает — хоть сжимай, хоть разжимай.

    создаешь канвас правильным способом, и рисуешь в него. и все.

    alysnix ★★★
    ( 06.05.22 21:06:33 MSK )

    • Ответить на это сообщение
    • Показать ответ
    • Ссылка

    Ответ на: комментарий от alysnix 06.05.22 21:06:33 MSK

    карочи ищи пример работы с Canvas какого-нить гуя, это и есть то, что тебе надо.

    alysnix ★★★
    ( 06.05.22 21:08:15 MSK )

    • Ответить на это сообщение
    • Ссылка

    Ответ на: комментарий от fluorite 06.05.22 21:05:21 MSK

    Тут подойдёт гибкая методология разработки (agile)

    Сбрось свой код с пояснениями. Язык, любой.

    saufesma ★
    ( 06.05.22 21:14:41 MSK ) автор топика

    • Ответить на это сообщение
    • Показать ответ
    • Ссылка

    Ответ на: комментарий от saufesma 06.05.22 21:14:41 MSK

    fluorite ★★★★★
    ( 06.05.22 21:27:47 MSK )

    • Ответить на это сообщение
    • Ссылка

    Какова методология разработки кода для следующей задачи

    нужно создать окно
    поводив в окне мышкой
    получаем кривую

    Сбрось свой код с пояснениями. Язык, любой.

    # Drawings.py # $ sudo apt install python3-pyqt5 # $ python Drawings.py import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QPainter, QColor from PyQt5.QtWidgets import QApplication, QWidget class MouseTracker(QWidget): def __init__(self): super().__init__() self.initUI() self.setMouseTracking(True) self.setAttribute(Qt.WA_OpaquePaintEvent, True) def initUI(self): self.show() self.posN = None self.posO = None def mouseMoveEvent(self, event): self.posO = self.posN self.posN = event.pos() self.update() def paintEvent(self, event): if self.posN and self.posO: q = QPainter(self) q.setPen(QColor(200, 0, 0)) q.drawLine(self.posO.x(), self.posO.y(), self.posN.x(), self.posN.y()) app = QApplication(sys.argv) ex = MouseTracker() sys.exit(app.exec_()) 

    окно сжимаем -> раскрываем, кривая не исчезла
    окно сворачиваем -> разворачиваем, кривая не исчезла

    Входят в дополнительные DLC по $20 каждый.

    EXL ★★★★★
    ( 06.05.22 21:46:34 MSK )

    • Ответить на это сообщение
    • Показать ответ
    • Ссылка

    Нинада никаких окон, устанавливашь compiz или если нельзя расширение для гнома. И на любом варианте накатываешь рисовалку на экран поверх всего. Рисуешь кривые как хоца! С тибя пять тыщ пясот пидисят пят рублёф

    LINUX-ORG-RU ★★★★★
    ( 06.05.22 21:51:47 MSK )
    Последнее исправление: LINUX-ORG-RU 06.05.22 21:52:38 MSK (всего исправлений: 1)

    • Ответить на это сообщение
    • Ссылка

    Ответ на: комментарий от fluorite 06.05.22 21:05:21 MSK

    Тут подойдёт гибкая методология разработки (agile)

    Aber ★★★★★
    ( 06.05.22 22:11:39 MSK )

    • Ответить на это сообщение
    • Ссылка

    Ответ на: комментарий от EXL 06.05.22 21:46:34 MSK

    Как ты к этому шёл?

    saufesma ★
    ( 06.05.22 22:30:22 MSK ) автор топика

    • Ответить на это сообщение
    • Показать ответ
    • Ссылка

    Что значит ОО? Объектно-ориентированность? Но так грамматически сомнительно писать, а два раза букву П потерять в ООП это .

    mydibyje ★★★
    ( 06.05.22 22:33:12 MSK )

    • Ответить на это сообщение
    • Ссылка

    Ответ на: комментарий от saufesma 06.05.22 22:30:22 MSK

    1. Родился в Сибири.
    2. Пошёл в школу.
    3. Купил мобильный телефон.
    4. В телефоне был Linux и оболочка на базе Qt 2.
    5. Я заинтересовался как формошлёпить под свой телефон.
    6. По итогу пришлось учить C++, Qt и немного заниматься реверс-инжинирингом.
    7. Позже жизнь заставила учить Python на уровне простого скриптинга.
    8. Совместив все эти знания, скилл поиска в Google и щепотку пасты с StackOverflow я смог написать подобный код под псевдо-ТЗ.

    Такого ответа ты ждал? Или что?

    EXL ★★★★★
    ( 06.05.22 22:39:31 MSK )
    Последнее исправление: EXL 06.05.22 22:42:58 MSK (всего исправлений: 1)

    • Ответить на это сообщение
    • Показать ответ
    • Ссылка

    Ответ на: комментарий от EXL 06.05.22 22:39:31 MSK

    У меня уже мозг взрывается от чтения чужого кода. А именно с этой задачей у меня картинка кода в голове не появляется, сам код есть, но не понятно как к нему пришёл автор. Может плохо владею CAPI?

    Начитавшись чужого кода я начал писать свой, сомнительно.

    Код на CAPI Lispworks.

    Ответ который наведет на мысль, а какой именно не знаю.

    saufesma ★
    ( 06.05.22 22:47:37 MSK ) автор топика
    Последнее исправление: saufesma 06.05.22 22:48:45 MSK (всего исправлений: 1)

    • Ответить на это сообщение
    • Показать ответы
    • Ссылка

    Здесь не принято в теги смотреть. 😀 Продублируй «lisp» в тексте поста.

    Gentooshnik ★★★★★
    ( 06.05.22 22:48:56 MSK )

    • Ответить на это сообщение
    • Ссылка

    Ответ на: комментарий от saufesma 06.05.22 22:47:37 MSK

    Нет, ну я конечно смог бы решить подобную задачу с помощью какой-нибудь привязки Lisp к SDL, но это выходит за рамки моей зоны комфорта, увы.

    EXL ★★★★★
    ( 06.05.22 22:52:28 MSK )

    • Ответить на это сообщение
    • Показать ответ
    • Ссылка

    Ответ на: комментарий от EXL 06.05.22 22:52:28 MSK

    Да ничего страшного.

    saufesma ★
    ( 06.05.22 22:56:25 MSK ) автор топика

    • Ответить на это сообщение
    • Ссылка

    Ответ на: комментарий от saufesma 06.05.22 22:47:37 MSK

    Я только начал осваивать лисп и еще не разобрался в GUI срдствах для него, но судя по быстрому гуглежу это какая-то проприетарная жесть, на которой даже никто за столько лет в инет не выложил туториал как написать свой Paint на лиспе в этом CAPI. Как в CAPI отслеживать движения мыши я вообще не нашел. Так что я бы наверное использовал Ltk, там хоть примеры есть канваса http://www.peter-herth.de/ltk/ltkdoc/node39.html и мыши http://www.peter-herth.de/ltk/ltkdoc/node41.html

    mydibyje ★★★
    ( 06.05.22 23:07:04 MSK )

    • Ответить на это сообщение
    • Показать ответы
    • Ссылка

    Если интересует именно мыслепроцесс при решении задачи, то в общем описано тут https://htdp.org/2022-2-9/Book/part_preface.html#(part._sec~3asystematic-design)

    mydibyje ★★★
    ( 07.05.22 20:31:25 MSK )

    • Ответить на это сообщение
    • Показать ответы
    • Ссылка

    Ответ на: комментарий от mydibyje 07.05.22 20:31:25 MSK

    Спасибо за участие, дело не в книжках, а во мне. Я что-то упускаю, а вот, что не могу понять. Я не вижу как язык работает, именно CAPI. Картинки в голове нет. Может это и есть ответ?

    Ltk не так уж прост, там багов пруд пруди, McCLIM то же самое.

    saufesma ★
    ( 07.05.22 21:04:45 MSK ) автор топика

    • Ответить на это сообщение
    • Ссылка

    Ответ на: комментарий от mydibyje 07.05.22 20:31:25 MSK

     1 From Problem Analysis to Data Definitions Identify the information that must be represented and how it is represented in the chosen programming language. Formulate data definitions and illustrate them with examples. 2 Signature, Purpose Statement, Header State what kind of data the desired function consumes and produces. Formulate a concise answer to the question what the function computes. Define a stub that lives up to the signature. 3 Functional Examples Work through examples that illustrate the function’s purpose. 4 Function Template Translate the data definitions into an outline of the function. 5 Function Definition Fill in the gaps in the function template. Exploit the purpose statement and the examples. 6 Testing Articulate the examples as tests and ensure that the function passes all. Doing so discovers mistakes. Tests also supplement examples in that they help others read and understand the definition when the need arises—and it will arise for any serious program. Figure 1: The basic steps of a function design recipe 

    Вот это у меня и не получается применить с CAPI.

    saufesma ★
    ( 07.05.22 21:59:36 MSK ) автор топика

    • Ответить на это сообщение
    • Ссылка

    Как обновлять окно PyQt во время выполнения длительного цикла из другого модуля

    Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
    Необходимо обновить браузер или попробовать использовать другой.

    rick1177
    Новичок

    Пользователь
    Июн 19, 2022 2 0 1
    Windows 11
    Python 3.10
    Спойлер: pip list

    Package Version
    —————— ————
    beautifulsoup4 4.11.1
    bs4 0.0.1
    certifi 2022.5.18.1
    charset-normalizer 2.0.12
    cycler 0.11.0
    fake-useragent 0.1.11
    fonttools 4.33.3
    idna 3.3
    kiwisolver 1.4.3
    lxml 4.9.0
    matplotlib 3.5.2
    numpy 1.22.4
    packaging 21.3
    pandas 1.4.2
    Pillow 9.1.1
    pip 22.1.2
    psycopg2 2.9.3
    pyparsing 3.0.9
    pypiwin32 223
    PyQt5 5.15.6
    PyQt5-Qt5 5.15.2
    PyQt5-sip 12.10.1
    PyQt5-stubs 5.15.6.0
    PyQt5Designer 5.14.1
    PySide2 5.15.2.1
    python-dateutil 2.8.2
    pytz 2022.1
    pywin32 304
    requests 2.28.0
    scipy 1.8.1
    setuptools 58.1.0
    shiboken2 5.15.2.1
    six 1.16.0
    soupsieve 2.3.2.post1
    urllib3 1.26.9
    win10toast 0.9

    Привет, я тут первый раз, надеюсь на научение и помощь. Сделал простой демонстрационный пример, где есть приложение, в котором по нажатию кнопки запускается функция, она должна выводить сообщение в окно, она вроде выводит, но проблема в том, что делает это не на каждой итерации, а лишь при полном окончании исполнения. Научите, пожалуйста, обновлять окно после каждого вывода сообщения. Спасибо.

    Спойлер: main.py

    import sys import FormClasses from PyQt5 import QtWidgets import random import time def send_messages (self): for i in range(5): a=random.randint(1, 3) time.sleep(a) temp_text = f"Привет ".format(str(i)) self.send_logs(text_to_send=temp_text, red=255, green=0, blue=0, text_schema="\033[31m", mes_type="info", self_=self) def main(): app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication window = FormClasses.ExampleApp() # Создаём объект класса ExampleApp window.show() # Показываем окно app.exec_() # и запускаем приложение if __name__ == '__main__': main() # то запускаем функцию main()

    Спойлер: FormClasses.py

    from PyQt5 import QtWidgets, QtGui import StartForm import random import main import datetime import main class ExampleApp(QtWidgets.QMainWindow, StartForm.Ui_MainWindow): def __init__(self): # Это здесь нужно для доступа к переменным, методам # и т.д. в файле design.py super().__init__() self.count=0 self.setupUi(self) # Это нужно для инициализации нашего дизайна self.pushButton_UpdateTitles.clicked.connect(self.start_update_titels) # назначение на кнопку self.progressBar.setMinimum(1) self.progressBar.setValue(1) def setText_in_plainTextEditLogger_change_color (self, red: int = 0, green: int = 0, blue: int = 0): color = QtGui.QColor(red, green, blue) color_format = self.plainTextEditLogger.currentCharFormat() color_format.setForeground(color) self.plainTextEditLogger.setCurrentCharFormat(color_format) def setText_in_plainTextEditLogger(self, changefontonred=False, text: str = "", red: int = 0, green: int = 0, blue: int = 0): self.plainTextEditLogger.moveCursor(QtGui.QTextCursor.Start) if self.count!=1: text = text+'\n' if changefontonred ==True: self.setText_in_plainTextEditLogger_change_color(red,green,blue) self.plainTextEditLogger.insertPlainText(text) def send_logs(self, text_to_send = "", red=0, green=0, blue=0, text_schema = "", mes_type = "info", self_=None): t = datetime.datetime.now() current_time = t.strftime('%d.%m.%Y %H:%M:%S') print((text_schema+"<>").format(str(current_time) + ": "+text_to_send)) text_to_send = str(current_time+": ") + text_to_send if self_ is not None: self.setText_in_plainTextEditLogger(changefontonred=True, text=text_to_send, red = red, green=green, blue = blue) def start_update_titels(self): main.send_messages(self)

    Спойлер: StartForm.py

    # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'StartForm.ui' # # Created by: PyQt5 UI code generator 5.15.6 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(400, 500) MainWindow.setMinimumSize(QtCore.QSize(400, 500)) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.pushButton_UpdateTitles = QtWidgets.QPushButton(self.centralwidget) self.pushButton_UpdateTitles.setMinimumSize(QtCore.QSize(0, 30)) self.pushButton_UpdateTitles.setObjectName("pushButton_UpdateTitles") self.verticalLayout.addWidget(self.pushButton_UpdateTitles) self.plainTextEditLogger = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEditLogger.setStyleSheet("QPlainTextEdit\n" "") self.plainTextEditLogger.setObjectName("plainTextEditLogger") self.verticalLayout.addWidget(self.plainTextEditLogger) self.progressBar = QtWidgets.QProgressBar(self.centralwidget) self.progressBar.setProperty("value", 1) self.progressBar.setObjectName("progressBar") self.verticalLayout.addWidget(self.progressBar) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Парсинг eLibrary")) self.pushButton_UpdateTitles.setText(_translate("MainWindow", "Update Titles"))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *