Рубрики
Без рубрики

Демонстрация для Pysimplegui

Узнайте некоторые из вещей, которые вы можете создать, проверив демонстрационную папку Pysimplegui. Это дает вам просто вкус того, что вы можете создать с помощью Pysimplegui

Автор оригинала: Mike Driscoll.

Pysimplegui Проект имеет много интересных Демоны Включены в свой проект, который вы можете использовать для участия, как использовать Pysimplegui. Демонсирует все основные виджеты, насколько я могу сказать, и они также охватывают рекомендуемые шаблоны дизайна для пакета. Кроме того, есть пара игр и других крошечных приложений, таких как версия понга и игры змеи.

В этой статье вы увидите небольшую выборку демонстрантов из проекта, который даст вам некоторое представление о том, что вы можете сделать с Pysimplegui.

Видение доступных виджетов

Пысимплеги имеет хорошую маленькую демонстрацию, называемую Demo_all_widgets.cy . Это демонстрирует почти все виджеты, которые поддерживает Pysimplegui в настоящее время. Pysimplegui завернул все виджеты Core Tkinter, но не виджеты TTK.

Это то, что демонстрирует демонстрацию, когда вы запускаете:

Давайте посмотрим на код для этой демонстрации:

#!/usr/bin/env python
'''
Example of (almost) all widgets, that you can use in PySimpleGUI.
'''

import PySimpleGUI as sg

sg.change_look_and_feel('GreenTan')

# ------ Menu Definition ------ #
menu_def = [['&File', ['&Open', '&Save', 'E&xit', 'Properties']],
            ['&Edit', ['Paste', ['Special', 'Normal', ], 'Undo'], ],
            ['&Help', '&About...'], ]

# ------ Column Definition ------ #
column1 = [[sg.Text('Column 1', background_color='lightblue', justification='center', size=(10, 1))],
           [sg.Spin(values=('Spin Box 1', '2', '3'),
                    initial_value='Spin Box 1')],
           [sg.Spin(values=('Spin Box 1', '2', '3'),
                    initial_value='Spin Box 2')],
           [sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 3')]]

layout = [
    [sg.Menu(menu_def, tearoff=True)],
    [sg.Text('(Almost) All widgets in one Window!', size=(
        30, 1), justification='center', font=("Helvetica", 25), relief=sg.RELIEF_RIDGE)],
    [sg.Text('Here is some text.... and a place to enter text')],
    [sg.InputText('This is my text')],
    [sg.Frame(layout=[
        [sg.CBox('Checkbox', size=(10, 1)),
         sg.CBox('My second checkbox!', default=True)],
        [sg.Radio('My first Radio!     ', "RADIO1", default=True, size=(10, 1)),
         sg.Radio('My second Radio!', "RADIO1")]], title='Options',
             title_color='red',
             relief=sg.RELIEF_SUNKEN,
             tooltip='Use these to set flags')],
    [sg.MLine(default_text='This is the default Text should you decide not to type anything', size=(35, 3)),
     sg.MLine(default_text='A second multi-line', size=(35, 3))],
    [sg.Combo(('Combobox 1', 'Combobox 2'), size=(20, 1)),
     sg.Slider(range=(1, 100), orientation='h', size=(34, 20), default_value=85)],
    [sg.OptionMenu(('Menu Option 1', 'Menu Option 2', 'Menu Option 3'))],
    [sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'), size=(30, 3)),
     sg.Frame('Labelled Group', [[
         sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=25, tick_interval=25),
         sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=75),
         sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=10),
         sg.Col(column1, background_color='lightblue')]])
    ],
    [sg.Text('_' * 80)],
    [sg.Text('Choose A Folder', size=(35, 1))],
    [sg.Text('Your Folder', size=(15, 1), justification='right'),
     sg.InputText('Default Folder'), sg.FolderBrowse()],
    [sg.Submit(tooltip='Click to submit this form'), sg.Cancel()]]

window = sg.Window('Everything bagel', layout,
    default_element_size=(40, 1), grab_anywhere=False)

event, values = window.read()
sg.popup('Title',
         'The results of the window.',
         'The button clicked was "{}"'.format(event),
         'The values are', values)

Pysimplegui устанавливает свои виджеты с помощью списков Python. Вы также можете увидеть, что эта демонстрация использует списки для создания меню. Тогда вы создаете Окно Объект и пропуск в макете, который является вашим списком списков элементов или виджетов.

Посмотрим, что еще вы можете сделать!

Графики с Pysimplegui.

Pysimplegui также поддерживает создание графов. Один из таких примеров можно найти в Demo_graph_element_sine_wave.py Отказ Эта демонстрирует разработчик, как использовать виджет графа.

Это то, что демонстрирует демонстрацию, когда вы запускаете:

Вот что выглядит код:

import PySimpleGUI as sg
import math

# Yet another usage of Graph element.

SIZE_X = 200
SIZE_Y = 100
NUMBER_MARKER_FREQUENCY = 25


def draw_axis():
    graph.draw_line((-SIZE_X, 0), (SIZE_X, 0))                # axis lines
    graph.draw_line((0, -SIZE_Y), (0, SIZE_Y))

    for x in range(-SIZE_X, SIZE_X+1, NUMBER_MARKER_FREQUENCY):
        graph.draw_line((x, -3), (x, 3))                       # tick marks
        if x != 0:
            # numeric labels
            graph.draw_text(str(x), (x, -10), color='green')

    for y in range(-SIZE_Y, SIZE_Y+1, NUMBER_MARKER_FREQUENCY):
        graph.draw_line((-3, y), (3, y))
        if y != 0:
            graph.draw_text(str(y), (-10, y), color='blue')


# Create the graph that will be put into the window
graph = sg.Graph(canvas_size=(400, 400),
                 graph_bottom_left=(-(SIZE_X+5), -(SIZE_Y+5)),
                 graph_top_right=(SIZE_X+5, SIZE_Y+5),
                 background_color='white',
                 key='graph')
# Window layout
layout = [[sg.Text('Example of Using Math with a Graph', justification='center', size=(50, 1), relief=sg.RELIEF_SUNKEN)],
          [graph],
          [sg.Text('y = sin(x / x2 * x1)', font='COURIER 18')],
          [sg.Text('x1'), sg.Slider((0, 200), orientation='h',
                                 enable_events=True, key='-SLIDER-')],
          [sg.Text('x2'), sg.Slider((1, 200), orientation='h', enable_events=True, key='-SLIDER2-')]]

window = sg.Window('Graph of Sine Function', layout)

while True:
    event, values = window.read()
    if event is None:
        break
    graph.erase()
    draw_axis()
    prev_x = prev_y = None

    for x in range(-SIZE_X, SIZE_X):
        y = math.sin(x/int(values['-SLIDER2-']))*int(values['-SLIDER-'])
        if prev_x is not None:
            graph.draw_line((prev_x, prev_y), (x, y), color='red')
        prev_x, prev_y = x, y

window.close()

Чтобы правильно сделать график работать, вам нужно стереть график и перерисовать его в в то время как петля выше. Играйте с кодом немного и посмотрите, что вы можете сделать. В демонстрационной папке есть несколько других демонстраций, связанных с графиком, которые вы также должны проверить.

Pysimplegui также поддерживает Матплотлиб Интеграция. Весело играть с собой Demo_matplotlib_animated.py Отказ

Когда я пробежал его, демонстрация закончилась так:

Теперь давайте проверим еще одну демо!

Создание понга с Pysimplegui

Как я уже упоминал ранее в этой статье, вы также можете создать игру Pong довольно легко, используя Pysimplegui. Вы можете проверить Demo_pong.py Для получения полной информации.

Вот что код создает, когда вы запускаете его:

Код этой игры немного длинный, но не слишком сложно следовать. На момент написания, игра написана с использованием 183 строк кода в одном модуле.

Обертывание

Есть 150+ демонстрация в Pysimplegui’s Демо-папка Отказ Я обнаружил несколько, которые не работали на Linux из-за использования кода определенного ОС. Однако большинство примеров, похоже, работают, и это отличный способ увидеть, что вы можете сделать с этим проектом. Проверьте их, чтобы получить некоторые идеи о том, как вы можете использовать Pysimplegui для ваших собственных проектов или демонстраций.

Связанное чтение