Автор оригинала: 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 для ваших собственных проектов или демонстраций.
Связанное чтение
- Краткое введение в Pysimplegui.
- Pysimplegui документация
- Другие простые Pysimplegui Приложения