🚀 DAY 5 OF LAUNCH WEEK: Introducing Socket Firewall Enterprise.Learn more →
Socket
Book a DemoInstallSign in
Socket

pygubu-designer

Package Overview
Dependencies
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pygubu-designer

A simple GUI designer for the python tkinter module

Source
pipPyPI
Version
0.41
Maintainers
1

Leer en Español. More translations here

Welcome to Pygubu!

Pygubu is a RAD tool to enable quick and easy development of user interfaces for the Python's tkinter module.

The user interfaces designed are saved as XML files, and, by using the pygubu builder, these can be loaded by applications dynamically as needed.

Pygubu is inspired by Glade.

Installation

The latest version of pygubu requires Python >= 3.9

You can install pygubu-designer using:

pip

pip install pygubu-designer

Arch Linux (AUR)

yay pygubu-designer

Notes for Windows Users:

If your Python installation directory contains spaces (e.g., C:\Program Files\Python312), you may encounter errors. Use one of the following solutions:

  • Use quotation marks when running commands:

"C:\Program Files\Python312\Scripts\pygubu-designer.exe"
  • Add Python to your system's PATH:
  • Open System Properties > Environment Variables.
  • Under System Variables, select Path > Edit.
  • Add the path to your Python installation (e.g., C:\Program Files\Python312).
  • Use the short pathname format for directories with spaces:

C:\PROGRA~1\Python312\Scripts\pygubu-designer.exe

Screenshot

pygubu-desinger.png

Usage

Type on the terminal one of the following commands depending on your system.

Unix-like systems

pygubu-designer

Windows

C:\Python3\Scripts\pygubu-designer.exe

Where C:\Python3 is the path to your Python installation directory.

Now, you can start creating your tkinter application using the widgets that you find in the top panel called Widget Palette.

After you finished creating your UI definition, save it to a .ui file by going to the top menu File > Save.

The following is a UI definition example called helloworld.ui created using pygubu:

<?xml version='1.0' encoding='utf-8'?>
<interface version="1.2">
  <object class="tk.Toplevel" id="mainwindow">
    <property name="height">200</property>
    <property name="resizable">both</property>
    <property name="title" translatable="yes">Hello World App</property>
    <property name="width">200</property>
    <child>
      <object class="ttk.Frame" id="mainframe">
        <property name="height">200</property>
        <property name="padding">20</property>
        <property name="width">200</property>
        <layout manager="pack">
          <property name="expand">true</property>
          <property name="side">top</property>
        </layout>
        <child>
          <object class="ttk.Label" id="label1">
            <property name="anchor">center</property>
            <property name="font">Helvetica 26</property>
            <property name="foreground">#0000b8</property>
            <property name="text" translatable="yes">Hello World !</property>
            <layout manager="pack">
              <property name="side">top</property>
            </layout>
          </object>
        </child>
      </object>
    </child>
  </object>
</interface>

Then, you should create your application script as shown below (helloworld.py):

# helloworld.py
import pathlib
import tkinter as tk
import tkinter.ttk as ttk
import pygubu

PROJECT_PATH = pathlib.Path(__file__).parent
PROJECT_UI = PROJECT_PATH / "helloworld.ui"


class HelloworldApp:
    def __init__(self, master=None):
        # 1: Create a builder and setup resources path (if you have images)
        self.builder = builder = pygubu.Builder()
        builder.add_resource_path(PROJECT_PATH)

        # 2: Load an ui file
        builder.add_from_file(PROJECT_UI)

        # 3: Create the mainwindow
        self.mainwindow = builder.get_object('mainwindow', master)

        # 4: Connect callbacks
        builder.connect_callbacks(self)

    def run(self):
        self.mainwindow.mainloop()


if __name__ == '__main__':
    app = HelloworldApp()
    app.run()

Note that instead of helloworld.ui in the following line:

PROJECT_UI = PROJECT_PATH / "helloworld.ui"

You should insert the filename (or path) of your just saved UI definition.

Note also that instead of 'mainwindow' in the following line:

self.mainwindow = builder.get_object('mainwindow', master)

You should have the name of your main widget (the parent of all widgets), otherwise you will get an error similar to the following:

Exception: Widget not defined.

See this issue for more information.

Documentation

Visit the wiki for more documentation.

The following are some good tkinter (and tk) references:

You can also see the examples directory or watch this introductory video tutorial.

History

See the list of changes here.

License

Pygubu Designer: GPL-3.0 license

Pygubu Designer can generate pure python code scripts. For those cases where a license is required for these scripts, they are licensed under the same license as the pygubu core: MIT License. This applies to all standard plugins that come with pygubu core. If you're using a third-party plugin, check the plugin license.

Keywords

gui

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts