Tukaan is the new framework that aims to replace Tkinter

Overview

Tukaan

Code style: black

Tukaan is the new, pythonic and colorful (like a keel-billed toucan) framework that aims to replace Tkinter. It has everything (on my computer, not at GitHub) that you need to develop cross-platform GUIs.

WIP

Although all the basic widgets and other classes already exist in my local repo, they are not yet ready to push them to GitHub. I only push things to GitHub that work and can be tried, but they are still in progress, so you shouldn’t use it in any project.

The goal of Tukaan

The goal of Tukaan is to be an easy-to-use, powerful and pythonic alternative to Tkinter.

Tkinter is just a wrapper around Tk, that is so thin, that you can see through it, and even has holes on it. If you have ever used Tkinter, you know, it's kinda dumb. There are a lot of things not implemented in Tkinter, you can only access them with Tcl calls. Tukaan has everything you could need, and maybe even more.

In Tcl almost everything is represented as strings, and Tkinter doesn't convert them to Python objects, so you have to do that yourself. If you mess something up, it won't raise a Python exception, but Tcl a error, which you don't know what's wrong even if you know the Tcl language. Tkinter also looks awful by default. You can change this, if you use the the Ttk extensions. But why should you use extensions to make your GUI not look like it came from the 90's?

With Tukaan this is completely different. With it, the app looks native by default on Windows and on Mac OS as well. Unfortunately this isn't possible on Linux, but it uses a better theme than the Tk default.

Simple example

import tukaan

class MyApp(tukaan.App):
    def __init__(self):
        tukaan.App.__init__(self, title="My nice little Tukaan app")

        self.position = "center"

        self.button = tukaan.Button(self, text="Button")
        self.button.callback = lambda: print("ok")

        self.pack_widgets()
	
    def pack_widgets(self):
        self.button.pack()


def main():
    MyApp().run()

if __name__ == "__main__":
    main() 

Some very nice things in tukaan

Get clipboard content

print(tukaan.Clipboard.get())

# or

print(tukaan.Clipboard.content)

When was the user last active on the computer

print("User last active", tukaan.App().user_last_active, "seconds ago.")

Centering a window on the screen

For some reason it doesn't work sometimes

app = tukaan.App()
app.position = "center"

Color conversions

>> (0, 127, 255) print(color.hsv) >>> (210, 100, 100) print(color.cmyk) >>> (100, 50, 0, 0) ">
color = tukaan.Color("#007fff")
print(color.rgb)
>>> (0, 127, 255)
print(color.hsv)
>>> (210, 100, 100)
print(color.cmyk)
>>> (100, 50, 0, 0)

Screen information

screen = tukaan.Screen()
print(screen.width)
>>> 1920
print(screen.height)
>>> 1080
print(screen.dpi)
>>> 72

Credits

Many thing in Tukaan is based on:

Comments
  • packaging: migrate to a setup.cfg build

    packaging: migrate to a setup.cfg build

    TkDND is quite a big dependency which actually needs to be platform specific to reduce the size of the distribution wheels. I think you should move them to libtukaan.

    The other option is you keep them in tukaan, but then to reduce the distribution size, we need to fallback to setup.py based packaging.

    opened by demberto 23
  • change: use properties & descriptors

    change: use properties & descriptors

    Changed many / almost all getter / setter functions to either properties or descriptors. Using descriptors for a library like this will vastly reduce boilerplate.

    This is a BIG change. I might have unknowingly broken some code, since there were a lot of type errors, but I did check for references majority of the times.

    Tbh, the descriptors are placed a little randomly across modules, as I implemented them wherever required. I think there are just too many modules. The number of modules needs to be reduced and the scope of objects (variables / constants / functions / classes / modules) needs to be better indicated by a _ prefix to imply internal code.

    Apart from this, I personally have faced a lot of issues dealing with private variables for caching and public properties for exposing them. It might have been a different case for you but, imo private variables are best avoided wherever possible.

    opened by demberto 10
  • Add Mica effect, titlebar customization

    Add Mica effect, titlebar customization

    Hi!

    Could someone with Windows 11 build 22000 or above test the following two snippets for me?

    I don't have this build, and installing a new Windows build is kinda pain, so I'd be really grateful, if you someone could test them, and give feedback. Thanks!

    You can just download the 2022-02-16 branch, and run this two code to test it.

    Mica

    This code should add a Mica effect to the window, and remove it after 10 seconds.

    import tukaan
    
    app = tukaan.App(title="Test titlebar and window border customization")
    
    app.set_backdrop_effect("mica")
    
    tukaan.Timeout(10, lambda: app.set_backdrop_effect(None)).start()
    
    app.run()
    
    

    Titlebar bg, fg and window border:

    import tukaan
    
    app = tukaan.App(title="Test titlebar and window border customization")
    
    app.Titlebar.bg_color = tukaan.Color("#ffc568")
    app.Titlebar.fg_color = tukaan.Color("#6667ab")
    app.border_color = tukaan.Color("#007fff")
    
    app.run()
    

    I'm not sure, if I implemented the bg, fg and border color functions correctly, and the colors may be something completely else. Here's how they should look: asdf | color --- | --- titlebar should be this color | ffc568 titlebar text should be this color | 6667ab window border should be this color | 007fff

    help wanted 
    opened by rdbende 10
  • Add audio playback/record/manipulation features

    Add audio playback/record/manipulation features

    Audio in Tukaan

    Tukaan uses the awesome Snack Tk extension internally to play, record and manipulate audio. Unfortunately the Snack project is inactive since 2005, so I had to modify it a bit because it used deprecated, and removed ALSA functions. I also removed MP3/MPEG support, because it would require GPL license, and currently OGG/Vorbis and NIST/Sphere codecs aren't included.

    The Snack backend is implemented as a Git submodule, the repo can be found at github.com/tukaan/Snack

    Supported filetypes: Read: aiff, au, csl, sd, smp, snd, wav, and raw binary Write: aiff, au, csl, smp, snd, wav, and raw binary

    Basics

    from tukaan import Time, Timer
    from tukaan.audio import Filter, Sound
    
    sound = Sound()  # Create an empty sound object
    
    # --- OR ---
    
    sound = Sound(Path("/home/rdbende/Music/Elefánt/Kardhal.wav"))  # Load sound from file
    
    sound.play(Time[3:40])  # Play sound, starting at 3:40
    
    sound.convert("mono", sample_rate=16000)  # Convert sound to mono, 16kHz sample rate
    sound.save("./music.au")  # Save sound in a different format
    
    with Sound() as s:  # Deletes sound when __exit__ing
        s.play(block=True)
    

    Record audio

    sound = Sound()
    
    with sound.record():  # Stops the recording when __exit__ing
        Timer.wait(10)  # Wait for 10 seconds until it is recording
    
    # --- OR ---
    
    sound.start_recording(input="plughw:1")  # Start recording (without context) on the specified input device
    

    Do things with two sounds

    sound_1 = Sound()
    sound_2 = Sound()
    
    sound_1 += sound_2  # Concatenate sound
    
    sound_1 &= sound_2  # Mix sounds
    
    sound_1.insert(Time[2:34], sound_2)  # Insert a sound at 2:34
    

    Slicing a sound

    sound = Sound()
    
    sound[Time[1:23]:Time[4:56]]
    # Returns a SoundSection object (NOT a Sound object with that sound range!)
    # So you can modify the specified section of the original sound object (apply a filter, cut, crop, play and save)
    
    
    sound[Time[1:23]:Time[4:56]].detached
    # Returns a stand-alone Sound object containing the specified range from the original sound object
    
    sound[Time[1:23]:Time[4:56]]  # From 1:23 to 4:56
    sound[88200:Time[4:56]]  # From sample #88200 to to 4:56
    sound[Time[1:23]:...]  # From 1:23 to end of sound
    sound[...:Time[4:56]]  # From start of sound to 4:56
    # I know, you got it ;)
    

    Filters

    sound = Sound()
    
    # Apply filter to the sound
    sound @= Filter.Echo()
    
    # Chaining filters
    sound @= Filter.FadeIn() & Filter.Echo()  # Returns a ComposeFilter
    
    # Apply filter only to the playback
    with Filter.Reverb():
        sound.play()
    

    Available filters: Amplifier, Echo, FadeIn, FadeOut, Formant, Generator, IIR, MixChannels and Reverb

    Time

    Time[17:42:38]  # hours:minutes:seconds
    

    I created a time object too, to easily specify positions in the Sound. I could use datetime.time, but I don't like how it works.

    datetime.time.fromisoformat("01:23:45")
    

    You need separate method to be able to write a time as 1:23:45, and you need to use a string, so I just don't like it. I wanted to be able to write a time as Time(1:23:45). Of course, this is invalid syntax, but you can write Time[1:23:45] which will be interpreted as a slice. Unfortunately I can't make a Date object like this, because Date(2022/3/12) will be interpreted as a division anyways, so 🌻

    # These 3 are all the same
    
    time = tukaan.Time[1:23:45]
    
    time = tukaan.Time(1, 23, 45)
    
    time = tukaan.Time(hours=1, minutes=23, seconds=45)
    
    opened by rdbende 4
  • The first example in the readme fails with

    The first example in the readme fails with "TypeError: grid() got an unexpected keyword argument 'column'"

    The problem is in the following line:

    self.button.layout.grid(row=0, column=0, margin=(1, 2, 3, 4))
    

    There is no column parameter in the Grid.grid method, there is col instead.

    But I wonder, isn't it better to use full names like "column" or "columnspan"?

    opened by insolor 4
  • tukaan.exceptions.TclError: Serif: Unsupported platform windows-x64

    tukaan.exceptions.TclError: Serif: Unsupported platform windows-x64

    I cant run any Tukaan code on windows? Help

    import tukaan
    
    # Create window
    app = tukaan.App("Test TabView widget")
    
    # Create tabview
    tabview = tukaan.TabView(app)
    tabview.grid()
    
    # Create tabs
    tab_1 = tabview.Tab("Tab 1")
    tab_2 = tabview.Tab("Tab 2")
    
    # Add tab contents
    tukaan.Button(tab_1, "Button in tab 1").grid()  # You can display it inline, but then you can't access the object later
    tukaan.Button(tab_2, "Button in tab 2").grid()
    
    app.run()
    
    
    opened by PyHubs 2
  • Allow wildcard imports? 🤔

    Allow wildcard imports? 🤔

    When I create an app with tkinter I normally will start the file with from tkinter import * so it gets rid of the hassle of importing labels and buttons and whatnot. We need to make that compatible and work with Tukaan. Great job on the release by the way!

    further info 
    opened by Moosems 2
  • `tukaan.App` is crazy inefficient

    `tukaan.App` is crazy inefficient

    https://github.com/tukaan/tukaan/blob/fcf7ff97fe14da80d7f0d8b71e74c28d839e24f6/tukaan/app.py#L56-L70

    $ cat test.py
    import tukaan, tkinter, timeit
    
    
    def asdf():
        _ = tukaan.App()
        _.quit()
    
    
    def qwer():
        _ = tkinter.Tk()
        _.quit()
    
    
    print(timeit.timeit(asdf, number=100))
    print(timeit.timeit(qwer, number=100))
    
    $ python3 test.py
    can't invoke "event" command: application has been destroyed
        while executing
    "event generate $w <<ThemeChanged>>"
        (procedure "ttk::ThemeChanged" line 6)
        invoked from within
    "ttk::ThemeChanged"
    [...] * 99
    10.320173018000037  # tukaan
    2.983373939999933   # tkinter
    

    without those lines, tukaan is only between 2.9 and 3.3 seconds

    Times

    • with tukaan I never got below 2.9 (commented out those lines)
    • with tkinter I never got below 2.7
    • (with teek I never got below 3.3)
    opened by rdbende 2
  • AttributeError: partially initialized module 'tukaan' has no attribute 'App' (most likely due to a circular import)

    AttributeError: partially initialized module 'tukaan' has no attribute 'App' (most likely due to a circular import)

    I just follow the example given in ReadMeto try this module at the first time.

    import tukaan
    
    app = tukaan.App("My first Tukaan app")
    
    app.run()
    

    Then I get this error.

    
    (env) D:\Desktop\coding\sandbox>d:/Desktop/coding/discordpy/env/Scripts/python.exe d:/Desktop/coding/sandbox/tukaan.py
    Traceback (most recent call last):
      File "d:\Desktop\coding\sandbox\tukaan.py", line 1, in <module>
        import tukaan
      File "d:\Desktop\coding\sandbox\tukaan.py", line 3, in <module>
        app = tukaan.App("My first Tukaan app")
    AttributeError: partially initialized module 'tukaan' has no attribute 'App' (most likely due to a circular import)
    

    I am new to this module and I have no idea about why would this happens. Sorry for my incoveniences causes.

    opened by lmjaedentai 1
  • Add Windows blur

    Add Windows blur

    New feature to blur the window background on Windows.

    This API is kinda broken in Windows itself, and Microsoft hasn't documented it anywhere.

    Some documentation

    w.enable_bg_blur(tint, tint_opacity, effect)

    arg | type | description | default -- | -- | -- | -- tint | tukaan.Color | Color used to color the background. If None, current window bg color is used. | Current window bg tint_opacity | float | How much to color the background, on a range between 0 and 1. 0 = no color (transparent), 1 = only color (opaque) | 0.2 effect | tukaan.DwmBlurEffect | Sets what effect to use 👇 | DwmBlurEffect.BLUR (blur + tint with opacity)

    DwmBlurEffect (it's an enum) attributes
    
    DwmBlurEffect.DISABLED           -> no effect
    DwmBlurEffect.OPAQUE_COLOR       -> tint only
    DwmBlurEffect.TRANSPARENT_COLOR  -> tint with opacity
    DwmBlurEffect.BLUR               -> blur + tint with opacity
    DwmBlurEffect.ACRYLIC            -> acrylic blur + tint with opacity
    

    w.disable_bg_blur()

    Remove blur effect.

    Example

    import tukaan
    
    with tukaan.App(title="Nice little blur") as app:
        app.enable_bg_blur(tint=tukaan.Color("#6667ab"), tint_opacity=0.4)
        tukaan.Timeout(3, app.disable_bg_blur).start()
    

    Small hack (not really a hack by now)

    How to make acrylic effect?

    For acrylic effect you can use the effect argument, and set it to tukaan.DwmBlurEffect.ACRYLIC. This acrylic effect is available since Windows 10 1803, but it's incredibly laggy on all Windows 10 systems. Works well on Windows 11 though.

    opened by rdbende 1
  • Font management

    Font management

    I have no better idea than what teek does.

    Usually you don't need a named, mutable font object, just an object to specify the widget font, so a tcl namedfont is a total waste of memory. On the other hand it isn't good to have multiple font classes to different tasks.

    opened by rdbende 1
  • Add `Canvas` and `OpenGLCanvas` widgets

    Add `Canvas` and `OpenGLCanvas` widgets

    TODO:

    • Features of the traditional canvas widget: https://www.tcl.tk/man/tcl8.6/TkCmd/canvas.html

    • Features of the TkPath canvas widget https://github.com/avarga/tkpath/blob/master/doc/readme.adoc

    • OpenGL rendering

      • [ ] OpenGlCanvas class
      • [ ] moderngl or pyopengl? Moderngl is faster and more pythonic, but then we have to implement every platform specific stuff manually (context creation, makecurrent and swapbuffer)
    • Implement new dynamic theming engine using tkp::surface

    TODO in TkPath:

    • [ ] Add to libtukaan. Currently I have only a local .so
    • [ ] Some commands cause segfaults randomly. I've put some TODO comments to them
    • [ ] Finish partially or not implemented features

    Done (at least partially):

    These things need to be tested and possibly bugfixed

    • Canvas items
      • [x] Line (connects two points)
      • [x] Vector (has a length and a angle) See comment about these two in items.py
      • [x] Polygonal line
      • [x] Rectangle
      • [x] Square (rectangle subclass)
      • [x] Ellipse
      • [x] Circle (ellipse subclass)
      • [x] Polygon
      • [x] Text
      • [x] Image
      • [x] Path
      • [x] Item group
    • Utility classes
      • [x] Arrowheads
      • [x] Stroke patterns
      • [x] Transformations
      • [x] Pen (to draw object stroke)
      • [x] Brush (to draw object fill)
    • [x] TkPath works on Linux
    opened by rdbende 3
  • `LabeledView` widget

    `LabeledView` widget

    a.k.a labelframe. It could be really similar to the Frame (probably they should even be in the same file), but with a title attribute (a TextProp from _props.py. It should also inherit Frame.

    enhancement good first issue widget 
    opened by rdbende 0
  • `ButtonGroup` widget

    `ButtonGroup` widget

    A group of buttons, similar to RadioGroup. The button labels and callbacks could be specified in a dict, like items={"Text": do_something}.

    The leftmost button should have the Left.TButton style, the rightmost Right.TButton, and all the others Middle.TButton (similar stuff when the orientation is vertical), this way it's possible to do, that only the outer buttons have round corners. (I think my forest theme has this feature, but it might be only in one of my local branches).

    enhancement good first issue widget 
    opened by rdbende 0
  • High DPI support

    High DPI support

    • [ ] High DPI awareness High DPI awareness should be enabled on Windows by default
    • [ ] Scaling
      • [ ] Implement UI scaling
      • [ ] Support SVG based themes
      • [ ] Create SVG based sun valley theme
    good first issue 
    opened by rdbende 2
  • Accessibility

    Accessibility

    • [ ] Screen reader support I'm not sure... https://sourceforge.net/p/tcl/mailman/tcl-core/thread/8c01c04a-7c44-89a6-e2b4-90e919e37f63%40codebykevin.com/#msg36955189
    opened by rdbende 0
Releases(v0.2.0.retrigger)
  • v0.2.0.retrigger(Dec 22, 2022)

  • v0.2.0(Dec 22, 2022)

    Lots of breaking changes.

    What's Changed

    • change: use properties & descriptors by @demberto in https://github.com/tukaan/tukaan/pull/104
    • cleanup by @rdbende in https://github.com/tukaan/tukaan/pull/105
    • Bit of refactor on window stuff by @rdbende in https://github.com/tukaan/tukaan/pull/106
    • Add theming by @rdbende in https://github.com/tukaan/tukaan/pull/108
    • Fix a lotta bugs, add some tests by @rdbende in https://github.com/tukaan/tukaan/pull/110
    • Add filedialogs by @rdbende in https://github.com/tukaan/tukaan/pull/89
    • Check non-pip dependencies in setup.py by @rdbende in https://github.com/tukaan/tukaan/pull/117

    New Contributors

    • @demberto made their first contribution in https://github.com/tukaan/tukaan/pull/104

    Full Changelog: https://github.com/tukaan/tukaan/compare/v0.1.3...v0.2.0

    Source code(tar.gz)
    Source code(zip)
  • v0.1.3(Aug 30, 2022)

    What's Changed

    • Improved tooltips
    • Built-in dependency troubleshooting stuff
    • Update font file stuff and move to libtukaan by @rdbende in https://github.com/tukaan/tukaan/pull/100

    Full Changelog: https://github.com/tukaan/tukaan/compare/v0.1.1...v0.1.2

    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Aug 30, 2022)

    What's Changed

    • Improved tooltips
    • Built-in dependency troubleshooting stuff
    • Update font file stuff and move to libtukaan by @rdbende in https://github.com/tukaan/tukaan/pull/100

    Full Changelog: https://github.com/tukaan/tukaan/compare/v0.1.1...v0.1.2

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Jul 3, 2022)

    What's Changed

    • Add ToolTip class by @Moosems in https://github.com/tukaan/tukaan/pull/80
    • Update Serif to work on macOS in 5ce336e

    New Contributors

    • @Moosems made their first contribution in https://github.com/tukaan/tukaan/pull/80 🎉

    Full Changelog: https://github.com/tukaan/tukaan/compare/v0.1.0...v0.1.1

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jul 2, 2022)

    !! Not backwards-compatible !!

    What's Changed

    • Rewrite quasi everything by @rdbende in https://github.com/tukaan/tukaan/pull/82

    Full Changelog: https://github.com/tukaan/tukaan/compare/v0.0.1.dev1...v0.1.0

    * There's no multiline textbox widget at the moment, however the Entry widget was renamed to TextBox, this might be confusing 😕 The multiline text widget will return, but in a revised form, at least until it is merged into the Tcl/Tk core

    Source code(tar.gz)
    Source code(zip)
  • v0.0.1.dev1(Jun 5, 2022)

  • v0.0.1.dev0(Apr 22, 2022)

    This is the first release of Tukaan! ✨🥳 Tukaan website: https://tukaan.github.io Pypi project link: https://pypi.org/project/tukaan

    Feedback is welcome!

    Source code(tar.gz)
    Source code(zip)
Owner
Tukaan
Tukaan is the new framework that aims to replace Tkinter
Tukaan
Write interactive web app in script way.

PyWebIO Write interactive web app in script way. [Document] | [Demos] | [Why PyWebIO?] English | 中文 PyWebIO provides a series of imperative functions

PyWebIO 3.6k Dec 31, 2022
A Python based Connect 4 game made with DearPyGUI

Ultimate-Connect-4 A Python based Connect 4 game made with DearPyGUI NOTICE: If you connect to the game server hosted by Jah-On and attempt to send ma

4 Jun 01, 2022
A simple, yet powerful web GUI to manage your Wireguard server, powered by Flask.

Linguard Linguard aims to provide a clean, simple yet powerful web GUI to manage your WireGuard server, and it's powered by Flask. Read the docs for f

Jose Antonio Mazón San Bartolomé 111 Jan 07, 2023
Primeira interface (simples) desenvolvida em Python utilizando o PySimpleGUI

Interface-Python Sobre o projeto Primeira interface gráfica (simples) desenvolvida em Python utilizando o PySimpleGUI Interface Gráfica Tecnologias ut

Matheus Maia Alvarez 5 Apr 09, 2022
Missing widgets and components for Qt-python

superqt! "missing" widgets and components for PyQt/PySide This repository aims to provide high-quality community-contributed Qt widgets and components

napari 0 Nov 11, 2022
Python code examples on how to create several applications using Dear PyGui.

Python code examples on how to create several applications using Dear PyGui. Includes building and editing a table, as well as visualizing sorting algorithms in a plot.

Alexander H. 7 Sep 15, 2022
This is a short GUI project to evaluate Pbk solution.

Polubarinova-Kochina-solutions (Standalone GUI executables for Windows and Mac) Oden Institute for Computational Engineering and Sciences / Jackson Sc

Mohammad Afzal Shadab 1 Dec 24, 2022
Python3.9/Kivy2.0 project to manage Valkyrie Scenarios

.valkyrie Manager This is a Python 3.9/Kivy 2.0 application that helps to manage quest (.valkyrie) files (from Valkyrie app) It identifies new quests

Kempes J. 1 Jan 28, 2022
A little Python library for making simple Electron-like HTML/JS GUI apps

Eel Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries. Ee

Chris Knott 5.4k Jan 07, 2023
PyCG: Practical Python Call Graphs

PyCG - Practical Python Call Graphs PyCG generates call graphs for Python code using static analysis. It efficiently supports Higher order functions T

Vitalis Salis 185 Dec 29, 2022
This program is written in python. It will help you find a valid solution for a sudoku puzzle.

Sudoku-Solver-Using-Tkinter This program is written in python. It will help you find a valid solution for a sudoku puzzle. Requirements: Python3 IDLE

Ankan Mahapatra 3 Oct 02, 2021
Criando interfaces gráficas com Python e Qt 6 (PyQt6)

Criando interfaces gráficas com Python e Qt 6 (PyQt6) Qt O Qt é um framework para criação de interfaces gráficas multiplataforma, atualmente ele é des

Renato Cruz 1 Jun 07, 2022
Transparent & click through tkinter window. WINDOWS ONLY

REQUIREMENTS: WINDOWS ONLY pip install pywin32 NOTES: Will not work on top of a fullscreen application, if you are using this to draw on top of a gam

francis 2 Nov 04, 2022
Function-Plotter - GUI Python program that plots functions that are entered by the user

FunctionPlotter GUI Python program that plots functions that are entered by the user. The program takes minimum and maximum value for x and plot it as

Mohamed Magdy 2 Jan 20, 2022
This was my test project when i started to learn Python Tkinter. Its the simplest interface possible.

Rock-Paper-Scissors-Game- Project Description: This was my test project when i started to learn Python Tkinter. Its the simplest interface possible. R

Hassan Shahzad 2 Jan 17, 2022
Small Python scripts to take screenshot from a KaiOS/FFOS device and to mirror the screen of your phone.

This version of kaiscr is written by tkinter and can run in windows(use kailive-tk.py). "kailive-tk-speed.py" is speed optimization version. The sourc

openGiraffes Group 2 Mar 02, 2022
This repository contains some projects that I have done using Python + Tkinter.

This repository contains some projects that I have done using Python + Tkinter.

João Victor Vilela dos Santos 1 Nov 10, 2021
Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS

Kivy Innovative user interfaces made easy. Kivy is an open source, cross-platform Python framework for the development of applications that make use o

Kivy 15.4k Jan 07, 2023
QGUI - 0.1MB超轻量Python GUI框架,用模板来快捷制作深度学习模型推理界面

QGUI - 0.1MB超轻量Python GUI框架,用模板来快捷制作深度学习模型推理界面

QPT Family 92 Nov 18, 2022
A simple desktop news application written using python created using PyQt5

News-Application---Python This is a news application created using PyQt5. News is fetched through API from newsapi.org. Available top headlines from c

Sritiman Adak 1 Nov 14, 2021