Pyside2 Qwidget Class

SizeAdjustP olicy. A PySide2 window only exists as long as there is a reference to it in Python. PyQt4 Widget Class From A Qt Designer UI Posted on October 17, 2018 October 17, 2018 by robonobo This is a simple demonstration of how to create a widget from a Qt Designer ui file in PyQt4. Object representing a video player in Hiero. A high level overview of what is upcoming in the second volume of the PySide2 for Maya series. Tkinter and PySide side-by-side 25 November 2016 Out of the long list of cross-platform python GUI options , the two that I'm most familiar with are Tkinter and PySide. PyQt5 (using QWidget and QPainter classes) realizes left mouse button movement, middle mouse button zoom, right mouse button restore, etc On the basis of reference to others, the changes are not big, and the mouse is rewritten to realize the functions of moving, zooming, restoring and so on. They are extracted from open source Python projects. Maya の PySide について 次に Maya 固有の PySide についていくつかの事実を示します。 「 ウィジェットへのリファレンスの維持 」で説明されているように、Python インタプリタのガベージ コレクターによってウィジェットが破棄されないように、既存の Maya ウィンドウに対して Qt ウィジェットを. Comparativa entre los dos métodos de conexión para qt #####codigo completo##### import sys from PySide2. It is however useful for systems that have more than one touch input device because there it can be used to differentiate between the devices (i. You can vote up the examples you like or vote down the ones you don't like. Related course: PyQt Desktop Appications with Python. Also depends on the shiboken2 module. If there is no visible child widget at the specified position, the function returns 0. PySide2 Widget Class From A Qt Designer UI Posted on October 29, 2018 by robonobo This post is analogous to my similar post on creating a ui widget for PyQt4. Qt5 tutorial - learn C GUI programming with Qt. ui" ) 11 file. The following example shows how to log to a Qt GUI. This class is used to construct vertical box layout objects. จัดการปลั๊กอิน PySide2. Strangely enough, there’s no official documentation for PySide2. If you are using the PySide mix-in classes described below, this parenting will be handled for you automatically. So, for the InputField we have to determine "QLineEdit". The emphasis is on utilising the convience of Qt. Now you can use the project explorer to look through the source cpp files, python files, use the locator feature to open files and file classes / methods, and other features that Qt Creator provides. Between Qt4 and Qt5 there have been many classes and class members that are obsolete. from fbs_runtime. QWidget:: QWidget (QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) Constructs a widget which is a child of parent, with widget flags set to f. Créé dans les années 80 pour "améliorer le C", le langage C++ permet de développer avec une technique de programmation orientée objet qui aide à rendre les programmes plus évolutifs. The difference is that the window state changed event has the isOverride() flag set. This must be a subclass of QWidget. 随便添加一些控件,保存为 test. We start by creating an app which is an instance of the PySide2. QtWidgets import QWidget, QListWidget from shiboken2 import wrapInstance mayaMainWindowPtr = omui. But that creates two QWidgets (one for the Form class and one for self. from PySide2 import QtGui from PySide2 import QtWidgets from PySide2 import __version__ from shiboken2 import wrapInstance def maya_main_window(): ''' Return the Maya main window widget as a Python object ''' main_window_ptr = omui. Now, using PySide2 we will load the ui file and start our application: 1 # main. QHBoxLayout(). py and implemented a guarantee where if your program runs with Qt. Qt开源社区 › 精华区(请在“有问必答”发帖) › 有问必答 › 数据处理 › PySide2/PyQt5:如何自定義 QSortFilterProxyModel 顯示 发布主题 返回列表. Qt’s documentation is very well written and we encourage all pyqtgraph developers to familiarize themselves with it. It is optimized for showing images on screen. It exists mainly to keep QWorkspace working. sleep job as a QRunnable. This works, but has issues that I would rather not go into at the moment. QtWidgets import QApp. 我们把这段代码复制到Maya2017中的Scirpt Editor中执行,可以看到,QtGui. Maya 2017 PySide2 Docking Qt QMainWindow. open ( QFile. QtGui import * import sys app = QApplication(sys. If you call the following from Python 2. Qt for Python API¶. จัดการปลั๊กอิน PySide2. You can vote up the examples you like or vote down the ones you don't like. They are from open source Python projects. Add a QPushButton to the center of the centralwidget. We start with our standard imports, create an instance of out app and qwidget We've seen all this code before Then, we instance our QListWidget Next, we populate our list widget using a for loop and adding in each item with a number as the text Finally, we add the widget to the layout, show the window and run the app. Maya の PySide について 次に Maya 固有の PySide についていくつかの事実を示します。 「 ウィジェットへのリファレンスの維持 」で説明されているように、Python インタプリタのガベージ コレクターによってウィジェットが破棄されないように、既存の Maya ウィンドウに対して Qt ウィジェットを. Once upon a time there was a programming language called C. The book begins with an overview of Qt and QML. 追加chart_widget. By voting up you can indicate which examples are most useful and appropriate. QPushButton(). Earlier alpha versions of PySide2 (2. Maya 2017 PySide2 Docking Qt QMainWindow. import librosa import numpy as np import pyaudio from PySide2. setAttribute(Qt. And it was working fine for my tool’s windows until Maya 2017 came out. QtWidgets import QPushButton, QLabel, QLineEdit. QWidgetItem. It's more clear what comes from where. I started with the main program, then continued with the smaller and simpler classes, and finally the larger classes including the one for the main window. 我在qt设计器中创建了一个ui文件,我将其转换为py文件,但我想知道在哪输入我的按钮功能 Main. Hey there! I'm developing a GUI in PyQt5 right now. argv ) 9 10 file = QFile ( "mainwindow. Interface programming with PySide2 and PyQt keeps a classic form of statements and then structured implementations. shiboken2_generator: contains the generator binary that can work with a C++ project and a typesystem to generate Python bindings. ui = Ui_MainWindow() self. The QMessageBox class provides a modal dialog for informing the user or for asking the user a question and receiving an answer. I am new to PySide2. They are extracted from open source Python projects. QtCharts import QtCharts. At Qt Creator, create a new Qt Design Form, choose “Main Window” for template, and save as mainwindow. emit(u'aaa') 错误写法: self. Troubleshooting / Known Issues. import sys from PySide2. It also helps in the efficient use of windowâ s client area. As was explained in the PySide2 documentation ( https://doc. QTime', 'PySide2. import sys import random from PySide2 import QtCore, QtWidgets, QtGui class MyWidget (QtWidgets. Posted: (2 days ago) In this tutorial, you will learn the basics of GUI programming with Qt5 and C++. The PySide programming toolkit has a wide range of various widgets. QtWidgets import (QWidget, QHeaderView, QHBoxLayout, QTableView, QSizePolicy) from PySide2. 7+Pyside2 运行exe文件提示“ImportError: DLL load failed: 找不到指定的程序 1. Here are the examples of the python api PySide2. WindowFlags()): argument 1 has unexpected type 'PySide2. I’ve been working on embedding a Panda3D window inside a PySide2/Qt5 widget. It is used together with QGraphicsView for visualizing graphical items, such as lines, rectangles, text, or even custom items, on a 2D surface. Hi community, Today we’ve made a significant leap forwards for Qt. These will match the PySide2 naming convention. io/qtforpython/PySide2/QtWidgets/QWidget. Important thing in GUI programming is the layout management. alignment - Alignment. QWidget ): pass class PowerBar ( QtWidgets. 实在想不出怎么写了,我是新手,在写一个坦克游戏,在绘制方面不会了, 大致结构是这样,class tank : public QWidget, class Btank:public tank, clas Qt QPainter绘图原理. setAttribute(Qt. py was born in the film and visual effects industry to address the growing need for the development of software capable of running with more than one flavour of the Qt bindings for Python - PySide, PySide2, PyQt4 and PyQt5. for widget in widgets: widget. exe, pyside-uic. When I select "Tree_1" I can see tree one on the QStackedwidget and the same with tree_2. Using the Palette. 0~alpha0) do not have this problem. I will post the first few lines of my code below. __new__, which isn't allowed. QMainWindow taken from open source projects. Widgets are basic building blocks of an application. """Minimal Python 2 & 3 shim around all Qt bindings DOCUMENTATION Qt. 7 + pyside2 (只用pyside2,没有使用PyQt5) b. To get you upto scratch on my issue I will illustrate what I have and what I need. To use the more traditional box and grid layouts, you simply add a QWidget instance as the central widget. what you say, classes, you mean normal python classes that use widgets or what do you mean? I can't answer that as it would be either you create the master class (composite) then (if its a widget) or you would create each widget by itself if the "class" if not a widget and you don't want to show it. We start by creating an app which is an instance of the PySide2. 然后就是简单的测试了 这里用一个官网的小Demo. PyQtGraph is a pure-python graphics and GUI library built on PyQt4 / PySide and numpy. To include the definitions of modules classes, use the following directive:. MediaFlagsChooser¶ Bases: PySide2. setupUi(self). 此处的坑是 PySide2 的问题,不知道为何打包的时候没有将相关的文件夹打包到对应的目录下,需要手动修复这个问题。 我们可以去到 PySide2 的包路径. Okay, maybe it's the drugs I'm still taking for my knee, but I don't for the life of me see how to get the name of the file picked from that dialog. The Example class inherits from QtGui. class UI(MayaQWidgetDockableMixin, QtWidgets. Strangely enough, there’s no official documentation for PySide2. QAbstractItemView class is one of the Model/View Classes and is part of Qt's model/view framework. Qwidget is the simplest of all window types, the base class other UI stuff inherits from QWidget is the first of the four window classes I'll be showing Windows themselves are just the empty shell of an application, tool or whatever you're making. QPushButton(). QtGui import * from UI import createScene_Main class CreateScene(QWidget, createScene_Main. QApplication class. Aug 28, 2017 · PySide2 easy install! 28 Aug 2017 #Python #PySide #PyQt. Utils import Instance, bindings from JAK. This introduces a simple QtHandler class which takes a callable, which should be a slot in the main thread that does GUI updates. 我们把这段代码复制到Maya2017中的Scirpt Editor中执行,可以看到,QtGui. When implementing this function in subclasses of this class, you must construct and return new editor widgets with the parent widget specified. py and implemented a guarantee where if your program runs with Qt. from PySide2 import QtGui from PySide2 import QtWidgets from PySide2 import __version__ from shiboken2 import wrapInstance def maya_main_window(): ''' Return the Maya main window widget as a Python object ''' main_window_ptr = omui. Add a QPushButton to the center of the centralwidget. parent - QWidget. I tried to debug it and noticed that , if I set window. what you say, classes, you mean normal python classes that use widgets or what do you mean? I can't answer that as it would be either you create the master class (composite) then (if its a widget) or you would create each widget by itself if the "class" if not a widget and you don't want to show it. 違うんじゃあああああああああああああああああぁぁぁぁあああばばばっばばばば # from PySide2. This approach contrasts with the canvas-style approach used by the Graphics View Framework where items are added to a scene by the application and are. This way its easier to track the mouse position and interact with the widgets below it. And yes, when connecting to the derived class the code does actually seem to be stuck in the main thread (I checked this by blocking the main thread to show that the listener no. Hi, dev, I have my UI from QT Designer and I run it with a code in PyCharm successfully: from PySide. Then, You will learn how to use QWidget class, frames, labels, and text fields, and work with graphics. I'm trying to dock my AnimSchool Picker next to the channel box, but not docked to the right of the entire Maya application. The following skeleton file can be used to load any UI file generated from Qt Creator and display it. session ), the window will disappear when Python garbage collects the window at the end of the function. Use the maya. loadUIType() method to load a file and create a QWidget (or QMainWindow) object. x version of PySide2, you'll see that it appears as though Shiboken. In the end both QWidget and QWindow are based on QObject, Q_PROPERTY, signals and slots. When you are writing your own code, if you create a window inside a function, and don't store it somewhere persistent in memory (such as hou. ノートを書いておいてなんだが、今後私が PyQt を本格的に利用することはないと思う。数年前に PyQt に興味を持った理由は、所有していた私の貧弱な PC でも、Python での GUI プログラミングならば難なく実現できると考えたからだった。. Buttons, check boxes, sliders, list boxes etc. It is common to pass a QWidget, which is set as the internal widget, to this function, but it is also possible to pass a QMdiSubWindow directly. QWidget() in Qt5. This introduces a simple QtHandler class which takes a callable, which should be a slot in the main thread that does GUI updates. QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout in any case the whole PyQt5. 实在想不出怎么写了,我是新手,在写一个坦克游戏,在绘制方面不会了, 大致结构是这样,class tank : public QWidget, class Btank:public tank, clas Qt QPainter绘图原理. Here are the examples of the python api PySide2. With the WorkspaceControl class complete, this lesson demonstrates how to take existing examples from the PySide2 for Maya series and convert them to dockable UIs using this class. To include the definitions of modules classes, use the following directive:. 除了使用原生的类,我们还能从pyqt5中继承一些模块,以此来获得相关模块的属性。比如,我们创建一个继承于QWidget()的类,那么它就拥有了QWidget()的方法和属性,这样我们就可以不实例化一个QWidget()对象而直接拥有QWidget()的属性:. This means that we must call two constructors. So he invented C++. The management can be done in two ways. The central feature in this model is a very powerful mechanism for seamless object communication called signals and slots. to improve this situation for qt5 & pyside2 we need a way to find the bottom most class in the inheritance tree that has a shiboken wrapper. It is one of the alternatives to the standard library package Tkinter. Using real examples, we will not only implement a beautiful UI, we'll illustrate how it interacts with your regular Python business logic. Aug 28, 2017 · PySide2 easy install! 28 Aug 2017 #Python #PySide #PyQt. 01 - QDialog vs. argv ) 9 10 file = QFile ( "mainwindow. Hello all, I recently created a few scripts for 3ds Max 2017 using Python and PySide. Mixing PyQt4 widgets and Maya UI objects Nov 21, 2011. QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout in any case the whole PyQt5. The following are code examples for showing how to use PySide2. Then, You will learn how to use QWidget class, frames, labels, and text fields, and work with graphics. Хочу завязать на нажатие кнопки анимацию исчезновения виджета, но она срабатывает сразу при запуске программы в чём фокус пока не разобрался. If no other packages pulling 'python3-shiboken2' are installed on the computer, a PySide2-based program can't work/start properly. Was trying to get some basics of PySide2 inside Maya and right now I am facing problem, that button doesn't get translateButtonX. globalInstance() is running a QRunnable with python code; Change GlobalReceiver to explicitly 'use' [dis]connectNotify of the base class in order to avoid hiding these with its own overloads. QLabel ('Hello') To figure out if a class moved into e. More than 1 year has passed since last update. The Quarter thingy is really just a bridge to map qt mouse and keyboard events to Coin3D, and to tell Coin3D where to render on the screen (inside the qwidget paint area). PyQt5/PySide2的按钮控件使用实例 PySide2/PyQt5的MainWindow()主窗口控件初览 使用PySide2编写一个最基础的图形界面 通俗理解Qt for Python的模块结构 基于Python打造账号共享浏览器 Python编写一个验证码图片数据标注GUI程序. It converts the. QtWidgets import QApplication, QWidget from PySide2. Usage of fidget is centered around the Fidget class. Note: The output will differ depending on how wide is your screen and which all_hour. I started with the main program, then continued with the smaller and simpler classes, and finally the larger classes including the one for the main window. class QWidgetItem (w) ¶ param w. argv) class MyWidget(QWidget): def wheelEvent(self, event): print('ho…. 10 and PySide 1. This is a computationally heavy process, lasting for a minute or so, during which I want to show a progress bar (and make the rest of the UI unresponsive). Now i am trying to pop a simple file dialog on click of a button, below given is my GUI Code : from PySide2 import QtCore, QtGui, QtWidgets class Ui_Main. They are extracted from open source Python projects. QHBoxLayout(). 01 - QDialog vs. To install PySide2 using pip, run the command pip install pyside2. The PySide2. Handle both PySide and PySide2. QtWidgets import (QWidget, QHeaderView, QHBoxLayout, QTableView, QSizePolicy) from PySide2. The Example class inherits from QtGui. PyQt - QLabel Widget - A QLabel object acts as a placeholder to display non-editable text or image, or a movie of animated GIF. QApplication contains the main event loop, where all events from the window system and other sources are processed and dispatched. Adds widget as a scroll bar widget in the location specified by alignment. By voting up you can indicate which examples are most useful and appropriate. No toolkit can provide all widgets that programmers might need in their applications. QWidget()成功运行。说明当前PySide2中的模块已经按照PySide1的方式整理好了,兼容问题搞定,你可以沿用PySide1的调用方式来使用PySide2。 标签:err and utf-8 exce critical geb class lambda webkit. I am new to PySide2. It is used together with QGraphicsView for visualizing graphical items, such as lines, rectangles, text, or even custom items, on a 2D surface. subcontrol class qstylizer. Return type. A look at the differences between the QDialog and QWidget classes and how to create a window derived from QWidget. In addition, you can customize or create your own user interface by deriving your own loader class. Into this, I add for each area the defined class named SecondaryWindow. The base class for all user interfaces is the QWidget class. You can vote up the examples you like or vote down the ones you don't like. I designed a basic UI in the QtDesigner. QGraphicsScene is part of the Graphics View Framework. The input value can be a string, a number or an item from a list. This way its easier to track the mouse position and interact with the widgets below it. QWidget): """ Widget used for display and analysis of image data. They are extracted from open source Python projects. QtCore import Qt class _Bar (QtWidgets. QtGui import QPainter from PySide2. So we can't replace all QtGui with QtWidgets simply. shiboken2_generator: contains the generator binary that can work with a C++ project and a typesystem to generate Python bindings. Aussi célèbre que son prédécesseur, il est notamment incontournable dans l'univers des jeux vidéo. FontRole Font of the item (QFont) • Qt. Then, You will learn how to use QWidget class, frames, labels, and text fields, and work with graphics. Now you can use the project explorer to look through the source cpp files, python files, use the locator feature to open files and file classes / methods, and other features that Qt Creator provides. QTime', 'PySide2. QHBoxLayoutとかQtWidgets. QMainWindow): def __init__(self, parent=None): QtWidgets. Qt’s documentation is very well written and we encourage all pyqtgraph developers to familiarize themselves with it. PyQt5/PySide2的按钮控件使用实例 PySide2/PyQt5的MainWindow()主窗口控件初览 使用PySide2编写一个最基础的图形界面 通俗理解Qt for Python的模块结构 基于Python打造账号共享浏览器 Python编写一个验证码图片数据标注GUI程序. class MyWidget (QtWidgets. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. QWidgetItem. Launching it from the shelf, my code looks something like this: import hou from PySide2 import QtCore , QtGui , QtWidgets , QtUiTools class HDAManager ( QtWidgets. SizeAdjustPoli cy. The PySide programming toolkit has a wide range of various widgets. A high level overview of what is upcoming in the second volume of the PySide2 for Maya series. I looked at few examples from this. py file in memory, executes it, and returns a tuple containing the Qt UI type (“Ui_Form”) and base class (“PySide. (I’ve changed it’s color with self. If you are using the PySide mix-in classes described below, this parenting will be handled for you automatically. I'm trying to dock my AnimSchool Picker next to the channel box, but not docked to the right of the entire Maya application. How to shoot yourself in the foot. mayaMixin module contains classes to help simplify the integration of PySide-based widgets into Maya's UI. The following skeleton file can be used to load any UI file generated from Qt Creator and display it. QWidget This class is the base class for all the user interface objects provided by the QtWidgets module. This class is named Push_button and will be used like any QPushButton from default PyQt5 examples. But it should be QtWidgets. This is a fine way to create windows, however there is also a specific QMainWindow class. You can vote up the examples you like or vote down the ones you don't like. mainWindow() return wrapInstance(long(main_window_ptr), QtWidgets. The new widget is deleted when its parent is deleted. PySide2 is a Python API for the Qt framework. PyQt4 Widget Class From A Qt Designer UI Posted on October 17, 2018 October 17, 2018 by robonobo This is a simple demonstration of how to create a widget from a Qt Designer ui file in PyQt4. This is the generic form of a Qt widget. QtCharts import QtCharts. QWidget is the base class of all user interface objects which means that the same approaches for changing the background color can be used with them too. name ¶ Return type. Vinay Sajip This page contains a number of recipes related to logging, which have been found useful in the past. When implementing this function in subclasses of this class, you must construct and return new editor widgets with the parent widget specified. 7 using a 5. PySide2 is a Python binding of the cross-platform GUI toolkit Qt, currently developed by The Qt Company under the Qt for Python project. The first one for the Example class and the second one for the inherited class. Take into account that if you want. Everything a programmer needs for his job. py and implemented a guarantee where if your program runs with Qt. To use the more traditional box and grid layouts, you simply add a QWidget instance as the central widget. These will match the PySide2 naming convention. io/qtforpython/PySide2/QtWidgets/QWidget. Compared with Qt4, Qt5 moved some classes to QtWidgets module instead of QtGui. To protect widgets from being garbage collected, you should keep references to them in a static class variable, such as the GCProtector. QTimeZone'), ('PySide2. Someone asked how you can create maya UI objects and embed them within your main PyQt application. Dr: IgnoreMask = PySide2. To use your UI file in your app you need to load it into your Python code. QtWidgets import QApplication 5 from PySide2. Simply put, a Fidget (short for Functional Widget) is a QWidget with a value. It is one of the alternatives to the standard library package Tkinter. QWidget ): """ Custom Qt Widget to show a power bar and dial. shiboken2_generator: contains the generator binary that can work with a C++ project and a typesystem to generate Python bindings. Tooltips frequently appear when hovering the mouse over a widget (without clicking). If you want a window with a menubar, toolbar, statusbar, dock and central widgets, you can use the PySide GUI toolkit's QMainWindow. It's more clear what comes from where. By voting up you can indicate which examples are most useful and appropriate. This class is named Push_button and will be used like any QPushButton from default PyQt5 examples. This chapter will cover the following topics: QWidget. QWidgetの拡張にしてみる pyside2(pyqt5)がわかりずらいのは、QtWidgets. Hi! This is probably a dumb question. For example, Qt4: QtGui. It is however useful for systems that have more than one touch input device because there it can be used to differentiate between the devices (i. QTouchDevice. PySide2 import ApplicationContext from PySide2. py was born in the film and visual effects industry to address the growing need for the development of software capable of running with more than one flavour of the Qt bindings for Python - PySide, PySide2, PyQt4 and PyQt5. Into this, I add for each area the defined class named SecondaryWindow. 0~alpha0) do not have this problem. By voting up you can indicate which examples are most useful and appropriate. Then, You will learn how to use QWidget class, frames, labels, and text fields, and work with graphics. What seems to be going wrong is that mousePressEvent is not properly overriding the same virtual function on the QWidget C++ class when compiled with Nuitka. The first example demonstrates how to change the background color using QPalette. Python source code: qt_embedding. QMainWindow):. QtGui import QPainter from PySide2. It means that you can write your code in Python and use the Qt framework as you’d do with C++. class hiero. I recommend you to pick one and stick with it ;) class Base(): class Derived(Base):. PyQt is a multi-platform GUI toolkit. Almost all the classes that the developer will use when building the application, provided with PySide2 and PyQt5 frameworks, are inherited by the QWidget class. Bjarne Stroustrup decided that C memory management should be easier. If you have made Nuke tools that rely heavily on Pyside, the move to PySide2 in Nuke 11 causes a few issues. and work fine but more light just the class Ui [Qt. QFormLayout taken from open source projects. An easy way to get going with PySide in Maya (or Nuke for that matter) without the hassle of dealing with the shiboken/sip layer. It's more clear what comes from where. Command line to GUI! Hi! I am working as a teacher in a school in Sweden. PySide2 QThread Issue. This is good stuff. QWidget ): """ Custom Qt Widget to show a power bar and dial. You can vote up the examples you like or vote down the ones you don't like. See QBoxLayout for details. pyside2: contains all the PySide2 module for all the Qt libraries. The book begins with an overview of Qt and QML. Return type. Important thing in GUI programming is the layout management. setPixmap() qt,qwidget,qlabel. When expanded, the widget will resize to fit the sizeHint of child items. py and implemented a guarantee where if your program runs with Qt. paintEvent (event) ¶ Parameters. QWidget()成功运行。说明当前PySide2中的模块已经按照PySide1的方式整理好了,兼容问题搞定,你可以沿用PySide1的调用方式来使用PySide2。 标签:err and utf-8 exce critical geb class lambda webkit. The following are code examples for showing how to use PySide2. You can subclass this interface to receive video frames from sources like decoded media or cameras to perform your own processing. QtCore import QMetaObject, Qt from PySide2. It is one of the alternatives to the standard library package Tkinter. I then started porting the C++ application to Python by pasting in the C++ code for each class and converting it to Python.