Compare commits

1 Commits

Author SHA1 Message Date
William Henderson 7ee7ccddee V2.1 2022-01-25 22:48:58 +00:00
21 changed files with 0 additions and 1245 deletions
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
{
"CurrentProjectSetting": null
}
-7
View File
@@ -1,7 +0,0 @@
{
"ExpandedNodes": [
""
],
"SelectedNode": "\\beeptimes.py",
"PreviewInSolutionExplorer": false
}
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-15
View File
@@ -1,15 +0,0 @@
[GENERAL]
BeepDetailsDirectory = \\0.0.0.0\RealTimeTennis\DataBridge1\Logs\BounceDetails_1.log
CourtName = CHANGE ME
[THRESHOLDS]
Thresh1 = 120
Thresh1str = Cheating?
Thresh2 = 150
Thresh2str = Looking good
Thresh3 = 250
Thresh3str = Little slow
Thresh4 = 350
Thresh4str = Noticeably slow
Thresh5 = 351
Thresh5str = Help!!!
-847
View File
@@ -1,847 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0056)https://kivy.org/doc/stable/guide/packaging-windows.html -->
<html xmlns="http://www.w3.org/1999/xhtml" data-darkreader-mode="dynamic" data-darkreader-scheme="dark"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style class="darkreader darkreader--fallback" media="screen"></style><style class="darkreader darkreader--text" media="screen"></style><style class="darkreader darkreader--invert" media="screen">.jfk-bubble.gtx-bubble, .captcheck_answer_label > input + img, span#closed_text > img[src^="https://www.gstatic.com/images/branding/googlelogo"], span[data-href^="https://www.hcaptcha.com/"] > #icon, #bit-notification-bar-iframe, ::-webkit-calendar-picker-indicator {
filter: invert(100%) hue-rotate(180deg) contrast(90%) !important;
}</style><style class="darkreader darkreader--inline" media="screen">[data-darkreader-inline-bgcolor] {
background-color: var(--darkreader-inline-bgcolor) !important;
}
[data-darkreader-inline-bgimage] {
background-image: var(--darkreader-inline-bgimage) !important;
}
[data-darkreader-inline-border] {
border-color: var(--darkreader-inline-border) !important;
}
[data-darkreader-inline-border-bottom] {
border-bottom-color: var(--darkreader-inline-border-bottom) !important;
}
[data-darkreader-inline-border-left] {
border-left-color: var(--darkreader-inline-border-left) !important;
}
[data-darkreader-inline-border-right] {
border-right-color: var(--darkreader-inline-border-right) !important;
}
[data-darkreader-inline-border-top] {
border-top-color: var(--darkreader-inline-border-top) !important;
}
[data-darkreader-inline-boxshadow] {
box-shadow: var(--darkreader-inline-boxshadow) !important;
}
[data-darkreader-inline-color] {
color: var(--darkreader-inline-color) !important;
}
[data-darkreader-inline-fill] {
fill: var(--darkreader-inline-fill) !important;
}
[data-darkreader-inline-stroke] {
stroke: var(--darkreader-inline-stroke) !important;
}
[data-darkreader-inline-outline] {
outline-color: var(--darkreader-inline-outline) !important;
}
[data-darkreader-inline-stopcolor] {
stop-color: var(--darkreader-inline-stopcolor) !important;
}</style><style class="darkreader darkreader--variables" media="screen">:root {
--darkreader-neutral-background: #131516;
--darkreader-neutral-text: #d8d4cf;
--darkreader-selection-background: #004daa;
--darkreader-selection-text: #e8e6e3;
}</style><style class="darkreader darkreader--root-vars" media="screen"></style><style class="darkreader darkreader--user-agent" media="screen">html {
background-color: #181a1b !important;
}
html, body, input, textarea, select, button {
background-color: #181a1b;
}
html, body, input, textarea, select, button {
border-color: #736b5e;
color: #e8e6e3;
}
a {
color: #3391ff;
}
table {
border-color: #545b5e;
}
::placeholder {
color: #b2aba1;
}
input:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill {
background-color: #555b00 !important;
color: #e8e6e3 !important;
}
::-webkit-scrollbar {
background-color: #202324;
color: #aba499;
}
::-webkit-scrollbar-thumb {
background-color: #454a4d;
}
::-webkit-scrollbar-thumb:hover {
background-color: #575e62;
}
::-webkit-scrollbar-thumb:active {
background-color: #484e51;
}
::-webkit-scrollbar-corner {
background-color: #181a1b;
}
::selection {
background-color: #004daa !important;
color: #e8e6e3 !important;
}
::-moz-selection {
background-color: #004daa !important;
color: #e8e6e3 !important;
}</style>
<meta name="twitter:site" content="@kivyframework">
<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/">
<title>Create a package for Windows — Kivy 2.0.0 documentation</title>
<link href="./Create a package for Windows — Kivy 2.0.0 documentation_files/css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="./Create a package for Windows — Kivy 2.0.0 documentation_files/fresh.css" type="text/css"><style class="darkreader darkreader--sync" media="screen"></style>
<link rel="stylesheet" href="./Create a package for Windows — Kivy 2.0.0 documentation_files/pygments.css" type="text/css"><style class="darkreader darkreader--sync" media="screen"></style>
<script type="text/javascript" async="" defer="" src="https://pw.kivy.org/pw.js"></script><script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.0.0',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script><meta name="darkreader" content="426a82ba399d4678839ccd44940c6405"><style class="darkreader darkreader--override" media="screen">.vimvixen-hint {
background-color: #7b5300 !important;
border-color: #d8b013 !important;
color: #f3e8c8 !important;
}
::placeholder {
opacity: 0.5 !important;
}
a[href="https://coinmarketcap.com/"] > svg[width="94"][height="16"] > path {
fill: var(--darkreader-neutral-text) !important;
}
#edge-translate-panel-body,
.MuiTypography-body1 {
color: var(--darkreader-neutral-text) !important;
}
gr-main-header {
background-color: #0f3a48 !important;
}
embed[type="application/pdf"] { filter: invert(100%) contrast(90%); }</style>
<script type="text/javascript" src="./Create a package for Windows — Kivy 2.0.0 documentation_files/documentation_options.js.download"></script>
<script type="text/javascript" src="./Create a package for Windows — Kivy 2.0.0 documentation_files/jquery.js.download"></script>
<script type="text/javascript" src="./Create a package for Windows — Kivy 2.0.0 documentation_files/underscore.js.download"></script>
<script type="text/javascript" src="./Create a package for Windows — Kivy 2.0.0 documentation_files/doctools.js.download"></script>
<script type="text/javascript" src="./Create a package for Windows — Kivy 2.0.0 documentation_files/jquery-effects-core-and-slide.js.download"></script>
<script type="text/javascript" src="./Create a package for Windows — Kivy 2.0.0 documentation_files/jquery.cookie.js.download"></script>
<script type="text/javascript" src="./Create a package for Windows — Kivy 2.0.0 documentation_files/kivy.js.download"></script>
<link rel="index" title="Index" href="https://kivy.org/doc/stable/genindex.html">
<link rel="search" title="Search" href="https://kivy.org/doc/stable/search.html">
<link rel="top" title="Kivy 2.0.0 documentation" href="https://kivy.org/doc/stable/index.html">
<link rel="up" title="Packaging your application" href="https://kivy.org/doc/stable/guide/packaging.html">
<link rel="next" title="Create a package for Android" href="https://kivy.org/doc/stable/guide/packaging-android.html">
<link rel="prev" title="Packaging your application" href="https://kivy.org/doc/stable/guide/packaging.html">
</head>
<body>
<div id="topbar">
<div id="topwrapper">
<div id="toplogo">
<a href="http://kivy.org/">
<img src="./Create a package for Windows — Kivy 2.0.0 documentation_files/logo-kivy.png" alt="Kivy" height="50">
</a>
</div>
<div id="topmenu">
<ul class="navigation">
<li><a class="nav-guides current" href="https://kivy.org/doc/stable/gettingstarted/intro.html">Guides</a></li>
<li><a class="nav-garden" href="http://kivy-garden.github.io/">Garden</a></li>
<li><a class="nav-api" href="https://kivy.org/doc/stable/api-kivy.html">API Reference</a></li>
<li><a class="nav-pdf" href="https://media.readthedocs.org/pdf/kivy/latest/kivy.pdf">PDF</a></li>
<li><a class="nav-wiki" href="http://wiki.kivy.org/">Wiki</a></li>
</ul>
</div>
</div>
</div>
<div id="contentall">
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3>Version</h3>
<select id="version_selector"><option selected="" value="stable">stable</option><option value="master">master</option><option value="stable-1.10.1">stable-1.10.1</option><option value="stable-1.11.0">stable-1.11.0</option><option value="stable-1.11.1">stable-1.11.1</option></select>
<h3>Quick search</h3>
<form class="search" action="https://kivy.org/doc/stable/search.html" method="get">
&nbsp;
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
<input type="text" class="text" name="q">
</form>
<!--
<h3><a href="../index.html">Create a package for Windows</a></h3>
<ul>
<li><a class="reference internal" href="#">Create a package for Windows</a><ul>
<li><a class="reference internal" href="#requirements">Requirements</a></li>
</ul>
</li>
<li><a class="reference internal" href="#pyinstaller-default-hook">PyInstaller default hook</a><ul>
<li><a class="reference internal" href="#packaging-a-simple-app">Packaging a simple app</a></li>
<li><a class="reference internal" href="#single-file-application">Single File Application</a></li>
<li><a class="reference internal" href="#bundling-data-files">Bundling Data Files</a></li>
<li><a class="reference internal" href="#packaging-a-video-app-with-gstreamer">Packaging a video app with gstreamer</a></li>
</ul>
</li>
<li><a class="reference internal" href="#overwriting-the-default-hook">Overwriting the default hook</a><ul>
<li><a class="reference internal" href="#including-excluding-video-and-audio-and-reducing-app-size">Including/excluding video and audio and reducing app size</a></li>
<li><a class="reference internal" href="#alternate-installations">Alternate installations</a></li>
</ul>
</li>
</ul>
<h3><a href="../index.html">Table Of Contents</a></h3>
-->
<ul>
<li class="toctree-l1"><a class="reference internal mainlevel togglable" href="https://kivy.org/doc/stable/guide/packaging-windows.html#">Getting Started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/intro.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/installation.html">Installing Kivy</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/first_app.html">A first App</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/properties.html">Properties</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/rules.html">Kv Design Language</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/events.html">Events</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/framework.html">Non-widget stuff</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/layouts.html">Layouts</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/drawing.html">Drawing</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/packaging.html">Packaging</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/examples.html">Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/diving.html">Diving in</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal mainlevel togglable" href="https://kivy.org/doc/stable/guide/packaging-windows.html#">Gallery of Examples</a><ul>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gallery.html">Gallery</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__3Drendering__main__py.html">3D Rotating Monkey Head</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__animation__animate__py.html">Widget animation</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__application__app_suite__py.html">Suite of Application Builders</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__application__app_with_build__py.html">Application example using build() + return</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__application__app_with_kv__py.html">Application built from a .kv file</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__application__app_with_kv_in_template1__py.html">Application from a .kv in a Template Directory</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__camera__main__py.html">Camera Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__bezier__py.html">Bezier Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__canvas_stress__py.html">Canvas stress</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__circle__py.html">Circle Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__fbo_canvas__py.html">FBO Canvas</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__lines__py.html">Line (SmoothLine) Experiment</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__lines_extended__py.html">Lines Extended Demo</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__mesh__py.html">Mesh test</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__multitexture__py.html">Multitexture Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__repeat_texture__py.html">Repeat Texture on Resize</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__rotation__py.html">Rotation Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__stencil_canvas__py.html">Stencil demo</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__tesselate__py.html">Tesselate Demonstration</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__canvas__texture__py.html">Texture Wrapping and Coordinates Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__demo__camera_puzzle__py.html">Shuffled Camera Feed Puzzle</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__demo__kivycatalog__main__py.html">Kivy Catalog</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__demo__multistroke__main__py.html">Multistroke Recognition Database Demonstration</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__demo__pictures__main__py.html">Basic Picture Viewer</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__demo__shadereditor__main__py.html">Live Shader Editor</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__demo__showcase__main__py.html">Showcase of Kivy Features</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/examples/gen__demo__touchtracer__main__py.html">Touch Tracer Line Drawing Demonstration</a></li>
</ul>
</li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal mainlevel togglable" href="https://kivy.org/doc/stable/guide/packaging-windows.html#">Getting Started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/intro.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/installation.html">Installing Kivy</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/first_app.html">A first App</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/properties.html">Properties</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/rules.html">Kv Design Language</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/events.html">Events</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/framework.html">Non-widget stuff</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/layouts.html">Layouts</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/drawing.html">Drawing</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/packaging.html">Packaging</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/examples.html">Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/gettingstarted/diving.html">Diving in</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal mainlevel togglable" href="https://kivy.org/doc/stable/guide/packaging-windows.html#">Kivy Project</a><ul>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/philosophy.html">Philosophy</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/contribute.html">Contributing</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/faq.html">FAQ</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/contact.html">Contact Us</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal mainlevel togglable" href="https://kivy.org/doc/stable/guide/packaging-windows.html#">Programming Guide</a><ul class="current" style="display: block;">
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/basic.html">Kivy Basics</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/environment.html">Controlling the environment</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/config.html">Configure Kivy</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/architecture.html">Architectural Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/events.html">Events and Properties</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/inputs.html">Input management</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/widgets.html">Widgets</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/graphics.html">Graphics</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/lang.html">Kv language</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/other-frameworks.html">Integrating with other Frameworks</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging.html">Packaging your application</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/guide/licensing.html">Package licensing</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal mainlevel togglable" href="https://kivy.org/doc/stable/guide/packaging-windows.html#">Tutorials</a><ul>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/tutorials/pong.html">Pong Game Tutorial</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/tutorials/firstwidget.html">A Simple Paint App</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/tutorials/crashcourse.html">Crash Course</a></li>
</ul>
</li>
<li class="toctree-l1" style="display: none;"><a class="reference internal mainlevel togglable" href="https://kivy.org/doc/stable/guide/packaging-windows.html#">API Reference</a><ul class="api-index">
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.html">kivy</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy._version.html">kivy._version</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.animation.html">kivy.animation</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.app.html">kivy.app</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.atlas.html">kivy.atlas</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.base.html">kivy.base</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.cache.html">kivy.cache</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.clock.html">kivy.clock</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.compat.html">kivy.compat</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.config.html">kivy.config</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.context.html">kivy.context</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.html">kivy.core</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.audio.html">kivy.core.audio</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.camera.html">kivy.core.camera</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.clipboard.html">kivy.core.clipboard</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.gl.html">kivy.core.gl</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.image.html">kivy.core.image</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.spelling.html">kivy.core.spelling</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.text.html">kivy.core.text</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.text.markup.html">kivy.core.text.markup</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.text.text_layout.html">kivy.core.text.text_layout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.video.html">kivy.core.video</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.core.window.html">kivy.core.window</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.deps.html">kivy.deps</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.effects.html">kivy.effects</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.effects.dampedscroll.html">kivy.effects.dampedscroll</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.effects.kinetic.html">kivy.effects.kinetic</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.effects.opacityscroll.html">kivy.effects.opacityscroll</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.effects.scroll.html">kivy.effects.scroll</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.event.html">kivy.event</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.factory.html">kivy.factory</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.garden.html">kivy.garden</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.geometry.html">kivy.geometry</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.gesture.html">kivy.gesture</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.html">kivy.graphics</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.cgl.html">kivy.graphics.cgl</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.compiler.html">kivy.graphics.compiler</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.context.html">kivy.graphics.context</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.context_instructions.html">kivy.graphics.context_instructions</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.fbo.html">kivy.graphics.fbo</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.gl_instructions.html">kivy.graphics.gl_instructions</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.instructions.html">kivy.graphics.instructions</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.opengl.html">kivy.graphics.opengl</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.opengl_utils.html">kivy.graphics.opengl_utils</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.scissor_instructions.html">kivy.graphics.scissor_instructions</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.shader.html">kivy.graphics.shader</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.stencil_instructions.html">kivy.graphics.stencil_instructions</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.svg.html">kivy.graphics.svg</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.tesselator.html">kivy.graphics.tesselator</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.texture.html">kivy.graphics.texture</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.graphics.transformation.html">kivy.graphics.transformation</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.html">kivy.input</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.factory.html">kivy.input.factory</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.motionevent.html">kivy.input.motionevent</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.postproc.html">kivy.input.postproc</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.postproc.calibration.html">kivy.input.postproc.calibration</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.postproc.dejitter.html">kivy.input.postproc.dejitter</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.postproc.doubletap.html">kivy.input.postproc.doubletap</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.postproc.ignorelist.html">kivy.input.postproc.ignorelist</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.postproc.retaintouch.html">kivy.input.postproc.retaintouch</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.postproc.tripletap.html">kivy.input.postproc.tripletap</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.provider.html">kivy.input.provider</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.html">kivy.input.providers</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.androidjoystick.html">kivy.input.providers.androidjoystick</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.hidinput.html">kivy.input.providers.hidinput</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.leapfinger.html">kivy.input.providers.leapfinger</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.linuxwacom.html">kivy.input.providers.linuxwacom</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.mactouch.html">kivy.input.providers.mactouch</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.mouse.html">kivy.input.providers.mouse</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.mtdev.html">kivy.input.providers.mtdev</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.probesysfs.html">kivy.input.providers.probesysfs</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.tuio.html">kivy.input.providers.tuio</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.providers.wm_common.html">kivy.input.providers.wm_common</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.recorder.html">kivy.input.recorder</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.input.shape.html">kivy.input.shape</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.interactive.html">kivy.interactive</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.lang.html">kivy.lang</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.lang.builder.html">kivy.lang.builder</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.lang.parser.html">kivy.lang.parser</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.lib.html">kivy.lib</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.lib.ddsfile.html">kivy.lib.ddsfile</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.lib.gstplayer.html">kivy.lib.gstplayer</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.lib.mtdev.html">kivy.lib.mtdev</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.loader.html">kivy.loader</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.logger.html">kivy.logger</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.metrics.html">kivy.metrics</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.html">kivy.modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.console.html">kivy.modules.console</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.inspector.html">kivy.modules.inspector</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.joycursor.html">kivy.modules.joycursor</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.keybinding.html">kivy.modules.keybinding</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.monitor.html">kivy.modules.monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.recorder.html">kivy.modules.recorder</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.screen.html">kivy.modules.screen</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.touchring.html">kivy.modules.touchring</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.modules.webdebugger.html">kivy.modules.webdebugger</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.multistroke.html">kivy.multistroke</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.network.html">kivy.network</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.network.urlrequest.html">kivy.network.urlrequest</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.parser.html">kivy.parser</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.properties.html">kivy.properties</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.resources.html">kivy.resources</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.storage.html">kivy.storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.storage.dictstore.html">kivy.storage.dictstore</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.storage.jsonstore.html">kivy.storage.jsonstore</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.storage.redisstore.html">kivy.storage.redisstore</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.support.html">kivy.support</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.html">kivy.tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.html">kivy.tools.packaging</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html">kivy.tools.packaging.pyinstaller_hooks</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.html">kivy.uix</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.accordion.html">kivy.uix.accordion</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.actionbar.html">kivy.uix.actionbar</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.anchorlayout.html">kivy.uix.anchorlayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.html">kivy.uix.behaviors</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.button.html">kivy.uix.behaviors.button</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.codenavigation.html">kivy.uix.behaviors.codenavigation</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.compoundselection.html">kivy.uix.behaviors.compoundselection</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.cover.html">kivy.uix.behaviors.cover</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.drag.html">kivy.uix.behaviors.drag</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.emacs.html">kivy.uix.behaviors.emacs</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.focus.html">kivy.uix.behaviors.focus</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.knspace.html">kivy.uix.behaviors.knspace</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.togglebutton.html">kivy.uix.behaviors.togglebutton</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.behaviors.touchripple.html">kivy.uix.behaviors.touchripple</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.boxlayout.html">kivy.uix.boxlayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.bubble.html">kivy.uix.bubble</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.button.html">kivy.uix.button</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.camera.html">kivy.uix.camera</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.carousel.html">kivy.uix.carousel</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.checkbox.html">kivy.uix.checkbox</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.codeinput.html">kivy.uix.codeinput</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.colorpicker.html">kivy.uix.colorpicker</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.dropdown.html">kivy.uix.dropdown</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.effectwidget.html">kivy.uix.effectwidget</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.filechooser.html">kivy.uix.filechooser</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.floatlayout.html">kivy.uix.floatlayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.gesturesurface.html">kivy.uix.gesturesurface</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.gridlayout.html">kivy.uix.gridlayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.image.html">kivy.uix.image</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.label.html">kivy.uix.label</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.layout.html">kivy.uix.layout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.modalview.html">kivy.uix.modalview</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.pagelayout.html">kivy.uix.pagelayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.popup.html">kivy.uix.popup</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.progressbar.html">kivy.uix.progressbar</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.recycleboxlayout.html">kivy.uix.recycleboxlayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.recyclegridlayout.html">kivy.uix.recyclegridlayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.recyclelayout.html">kivy.uix.recyclelayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.recycleview.html">kivy.uix.recycleview</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.recycleview.datamodel.html">kivy.uix.recycleview.datamodel</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.recycleview.layout.html">kivy.uix.recycleview.layout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.recycleview.views.html">kivy.uix.recycleview.views</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.relativelayout.html">kivy.uix.relativelayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.rst.html">kivy.uix.rst</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.sandbox.html">kivy.uix.sandbox</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.scatter.html">kivy.uix.scatter</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.scatterlayout.html">kivy.uix.scatterlayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.screenmanager.html">kivy.uix.screenmanager</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.scrollview.html">kivy.uix.scrollview</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.settings.html">kivy.uix.settings</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.slider.html">kivy.uix.slider</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.spinner.html">kivy.uix.spinner</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.splitter.html">kivy.uix.splitter</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.stacklayout.html">kivy.uix.stacklayout</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.stencilview.html">kivy.uix.stencilview</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.switch.html">kivy.uix.switch</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.tabbedpanel.html">kivy.uix.tabbedpanel</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.textinput.html">kivy.uix.textinput</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.togglebutton.html">kivy.uix.togglebutton</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.treeview.html">kivy.uix.treeview</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.video.html">kivy.uix.video</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.videoplayer.html">kivy.uix.videoplayer</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.vkeyboard.html">kivy.uix.vkeyboard</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.uix.widget.html">kivy.uix.widget</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.utils.html">kivy.utils</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.vector.html">kivy.vector</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.weakmethod.html">kivy.weakmethod</a></li>
<li class="toctree-l2"><a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.weakproxy.html">kivy.weakproxy</a></li>
</ul>
</li>
</ul>
<!--
<h3>Related Topics</h3>
<ul>
<li>Previous: <a href="packaging.html" title="previous chapter">Packaging your application</a></li>
<li>Next: <a href="packaging-android.html" title="next chapter">Create a package for Android</a></li>
</ul>
-->
</div>
</div>
<div id="content" style="min-height: 4327.45px;">
<div class="wrapper">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="toc"><h2>Table Of Contents</h2><ul>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#">Create a package for Windows</a><ul>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#requirements">Requirements</a></li>
</ul>
</li>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#pyinstaller-default-hook">PyInstaller default hook</a><ul>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#packaging-a-simple-app">Packaging a simple app</a></li>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#single-file-application">Single File Application</a></li>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#bundling-data-files">Bundling Data Files</a></li>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#packaging-a-video-app-with-gstreamer">Packaging a video app with gstreamer</a></li>
</ul>
</li>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#overwriting-the-default-hook">Overwriting the default hook</a><ul>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#including-excluding-video-and-audio-and-reducing-app-size">Including/excluding video and audio and reducing app size</a></li>
<li><a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#alternate-installations">Alternate installations</a></li>
</ul>
</li>
</ul>
</div>
<section id="create-a-package-for-windows">
<span id="packaging-win"></span><h1>Programming Guide » Create a package for Windows<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#create-a-package-for-windows" title="Permalink to this headline"></a></h1>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This document only applies for kivy <code class="docutils literal notranslate"><span class="pre">1.9.1</span></code> and greater.</p>
</div>
<p>Packaging your application for the Windows platform can only be done inside the
Windows OS. The following process has been tested on Windows with the Kivy
<strong>wheels</strong> installation, see at the end for alternate installations.</p>
<p>The package will be either 32 or 64 bits depending on which version of Python
you ran it with.</p>
<section id="requirements">
<span id="packaging-windows-requirements"></span><h2>Requirements<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#requirements" title="Permalink to this headline"></a></h2>
<blockquote>
<div><ul class="simple">
<li><p>Latest Kivy (installed as described in <a class="reference internal" href="https://kivy.org/doc/stable/installation/installation-windows.html#installation-windows"><span class="std std-ref">Installation on Windows</span></a>).</p></li>
<li><p>PyInstaller 3.1+ (<code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">--upgrade</span> <span class="pre">pyinstaller</span></code>).</p></li>
</ul>
</div></blockquote>
</section>
</section>
<section id="pyinstaller-default-hook">
<span id="create-the-spec-file"></span><h1>PyInstaller default hook<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#pyinstaller-default-hook" title="Permalink to this headline"></a></h1>
<p>This section applies to PyInstaller (&gt;= 3.1) that includes the kivy hooks.
To overwrite the default hook the
following examples need to be slightly modified. See <a class="reference internal" href="https://kivy.org/doc/stable/guide/packaging-windows.html#overwrite-win-hook"><span class="std std-ref">Overwriting the default hook</span></a>.</p>
<section id="packaging-a-simple-app">
<h2>Packaging a simple app<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#packaging-a-simple-app" title="Permalink to this headline"></a></h2>
<p>For this example, well package the <strong>touchtracer</strong> example project and embed
a custom icon. The location of the kivy examples is, when using the wheels,
installed to <code class="docutils literal notranslate"><span class="pre">python\\share\\kivy-examples</span></code> and when using the github source
code installed as <code class="docutils literal notranslate"><span class="pre">kivy\\examples</span></code>. Well just refer to the full path leading
to the examples as <code class="docutils literal notranslate"><span class="pre">examples-path</span></code>. The touchtracer example is in
<code class="docutils literal notranslate"><span class="pre">examples-path\\demo\\touchtracer</span></code> and the main file is named <code class="docutils literal notranslate"><span class="pre">main.py</span></code>.</p>
<ol class="arabic">
<li><p>Open your command line shell and ensure that python is on the path (i.e.
<code class="docutils literal notranslate"><span class="pre">python</span></code> works).</p></li>
<li><p>Create a folder into which the packaged app will be created. For example
create a <code class="docutils literal notranslate"><span class="pre">TouchApp</span></code> folder and <a class="reference external" href="http://www.computerhope.com/cdhlp.htm">change to that directory</a> with e.g. <code class="docutils literal notranslate"><span class="pre">cd</span> <span class="pre">TouchApp</span></code>.
Then type:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">PyInstaller</span> <span class="o">--</span><span class="n">name</span> <span class="n">touchtracer</span> <span class="n">examples</span><span class="o">-</span><span class="n">path</span>\<span class="n">demo</span>\<span class="n">touchtracer</span>\<span class="n">main</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
<p>You can also add an <cite>icon.ico</cite> file to the application folder in order to
create an icon for the executable. If you dont have a .ico file available,
you can convert your <cite>icon.png</cite> file to ico using the web app
<a class="reference external" href="http://www.convertico.com/">ConvertICO</a>. Save the <cite>icon.ico</cite> in the
touchtracer directory and type:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">PyInstaller</span> <span class="o">--</span><span class="n">name</span> <span class="n">touchtracer</span> <span class="o">--</span><span class="n">icon</span> <span class="n">examples</span><span class="o">-</span><span class="n">path</span>\<span class="n">demo</span>\<span class="n">touchtracer</span>\<span class="n">icon</span><span class="o">.</span><span class="n">ico</span> <span class="n">examples</span><span class="o">-</span><span class="n">path</span>\<span class="n">demo</span>\<span class="n">touchtracer</span>\<span class="n">main</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
<p>For more options, please consult the
<a class="reference external" href="http://pythonhosted.org/PyInstaller/">PyInstaller Manual</a>.</p>
</li>
<li><p>The spec file will be <code class="docutils literal notranslate"><span class="pre">touchtracer.spec</span></code> located in <code class="docutils literal notranslate"><span class="pre">TouchApp</span></code>. Now we
need to edit the spec file to add the dependencies hooks to correctly build
the exe. Open the spec file with your favorite editor and add these lines
at the beginning of the spec (assuming sdl2 is used, the default now):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">kivy_deps</span> <span class="kn">import</span> <span class="n">sdl2</span><span class="p">,</span> <span class="n">glew</span>
</pre></div>
</div>
<p>Then, find <code class="docutils literal notranslate"><span class="pre">COLLECT()</span></code> and add the data for touchtracer
(<cite>touchtracer.kv</cite>, <cite>particle.png</cite>, …): Change the line to add a <code class="docutils literal notranslate"><span class="pre">Tree()</span></code>
object, e.g. <code class="docutils literal notranslate"><span class="pre">Tree('examples-path\\demo\\touchtracer\\')</span></code>. This Tree will
search and add every file found in the touchtracer directory to your final
package.</p>
<p>To add the dependencies, before the first keyword argument in COLLECT add a
Tree object for every path of the dependencies. E.g.
<code class="docutils literal notranslate"><span class="pre">*[Tree(p)</span> <span class="pre">for</span> <span class="pre">p</span> <span class="pre">in</span> <span class="pre">(sdl2.dep_bins</span> <span class="pre">+</span> <span class="pre">glew.dep_bins)]</span></code> so itll look
something like:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">coll</span> <span class="o">=</span> <span class="n">COLLECT</span><span class="p">(</span><span class="n">exe</span><span class="p">,</span> <span class="n">Tree</span><span class="p">(</span><span class="s1">'examples-path</span><span class="se">\\</span><span class="s1">demo</span><span class="se">\\</span><span class="s1">touchtracer</span><span class="se">\\</span><span class="s1">'</span><span class="p">),</span>
<span class="n">a</span><span class="o">.</span><span class="n">binaries</span><span class="p">,</span>
<span class="n">a</span><span class="o">.</span><span class="n">zipfiles</span><span class="p">,</span>
<span class="n">a</span><span class="o">.</span><span class="n">datas</span><span class="p">,</span>
<span class="o">*</span><span class="p">[</span><span class="n">Tree</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="p">(</span><span class="n">sdl2</span><span class="o">.</span><span class="n">dep_bins</span> <span class="o">+</span> <span class="n">glew</span><span class="o">.</span><span class="n">dep_bins</span><span class="p">)],</span>
<span class="n">strip</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">upx</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">name</span><span class="o">=</span><span class="s1">'touchtracer'</span><span class="p">)</span>
</pre></div>
</div>
</li>
<li><p>Now we build the spec file in <code class="docutils literal notranslate"><span class="pre">TouchApp</span></code> with:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">PyInstaller</span> <span class="n">touchtracer</span><span class="o">.</span><span class="n">spec</span>
</pre></div>
</div>
</li>
<li><p>The compiled package will be in the <cite>TouchApp\dist\touchtracer</cite> directory.</p></li>
</ol>
</section>
<section id="single-file-application">
<h2>Single File Application<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#single-file-application" title="Permalink to this headline"></a></h2>
<p>Next, we will modify the example above to package the <strong>touchtracer</strong> example project as a single file application. Following the same steps as above, instead issue the following command:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">PyInstaller</span> <span class="o">--</span><span class="n">onefile</span> <span class="o">--</span><span class="n">name</span> <span class="n">touchtracer</span> <span class="n">examples</span><span class="o">-</span><span class="n">path</span>\<span class="n">demo</span>\<span class="n">touchtracer</span>\<span class="n">main</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
<ol class="arabic">
<li><p>As before, this will generate touchtracer.spec, which we will edit to add the dependencies. In this instance, edit the arguments to the EXE command so that it will look something like this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">exe</span> <span class="o">=</span> <span class="n">EXE</span><span class="p">(</span><span class="n">pyz</span><span class="p">,</span> <span class="n">Tree</span><span class="p">(</span><span class="s1">'examples-path</span><span class="se">\\</span><span class="s1">demo</span><span class="se">\\</span><span class="s1">touchtracer</span><span class="se">\\</span><span class="s1">'</span><span class="p">),</span>
<span class="n">a</span><span class="o">.</span><span class="n">scripts</span><span class="p">,</span>
<span class="n">a</span><span class="o">.</span><span class="n">binaries</span><span class="p">,</span>
<span class="n">a</span><span class="o">.</span><span class="n">zipfiles</span><span class="p">,</span>
<span class="n">a</span><span class="o">.</span><span class="n">datas</span><span class="p">,</span>
<span class="o">*</span><span class="p">[</span><span class="n">Tree</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="p">(</span><span class="n">sdl2</span><span class="o">.</span><span class="n">dep_bins</span> <span class="o">+</span> <span class="n">glew</span><span class="o">.</span><span class="n">dep_bins</span><span class="p">)],</span>
<span class="n">upx</span><span class="o">=</span><span class="kc">True</span>
<span class="n">name</span><span class="o">=</span><span class="s1">'touchtracer'</span><span class="p">)</span>
</pre></div>
</div>
</li>
<li><p>Now you can build the spec file as before with:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">PyInstaller</span> <span class="n">touchtracer</span><span class="o">.</span><span class="n">spec</span>
</pre></div>
</div>
</li>
<li><p>The compiled package will be in the <cite>TouchApp\dist</cite> directory and will consist of a single executable file.</p></li>
</ol>
</section>
<section id="bundling-data-files">
<h2>Bundling Data Files<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#bundling-data-files" title="Permalink to this headline"></a></h2>
<p>We will again modify the previous example to include bundled data files. PyInstaller allows inclusion of outside data files (such as images, databases, etc) that the project needs to run. When running an app on Windows, the executable extracts to a temporary folder which the Kivy project doesnt know about, so it cant locate these data files. We can fix that with a few lines.</p>
<ol class="arabic">
<li><p>First, follow PyInstaller documentation on how to include data files in your application.</p></li>
<li><p>Modify your main python code to include the following imports (if it doesnt have them already):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span>
<span class="kn">from</span> <span class="nn">kivy.resources</span> <span class="kn">import</span> <span class="n">resource_add_path</span><span class="p">,</span> <span class="n">resource_find</span>
</pre></div>
</div>
</li>
<li><p>Modify your main python code to include the following (using the <strong>touchtracer</strong> app as an example):</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">sys</span><span class="p">,</span> <span class="s1">'_MEIPASS'</span><span class="p">):</span>
<span class="n">resource_add_path</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">_MEIPASS</span><span class="p">))</span>
<span class="n">TouchtracerApp</span><span class="p">()</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
</pre></div>
</div>
</li>
<li><p>Finally, follow the steps for bundling your application above.</p></li>
</ol>
</section>
<section id="packaging-a-video-app-with-gstreamer">
<h2>Packaging a video app with gstreamer<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#packaging-a-video-app-with-gstreamer" title="Permalink to this headline"></a></h2>
<p>Following well slightly modify the example above to package a app that uses
gstreamer for video. Well use the <code class="docutils literal notranslate"><span class="pre">videoplayer</span></code> example found at
<code class="docutils literal notranslate"><span class="pre">examples-path\widgets\videoplayer.py</span></code>. Create a folder somewhere called
<code class="docutils literal notranslate"><span class="pre">VideoPlayer</span></code> and on the command line change your current directory to that
folder and do:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">PyInstaller</span> <span class="o">--</span><span class="n">name</span> <span class="n">gstvideo</span> <span class="n">examples</span><span class="o">-</span><span class="n">path</span>\<span class="n">widgets</span>\<span class="n">videoplayer</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
<p>to create the <code class="docutils literal notranslate"><span class="pre">gstvideo.spec</span></code> file. Edit as above and this time include the
gstreamer dependency as well:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">kivy_deps</span> <span class="kn">import</span> <span class="n">sdl2</span><span class="p">,</span> <span class="n">glew</span><span class="p">,</span> <span class="n">gstreamer</span>
</pre></div>
</div>
<p>and add the <code class="docutils literal notranslate"><span class="pre">Tree()</span></code> to include the video files, e.g.
<code class="docutils literal notranslate"><span class="pre">Tree('examples-path\\widgets')</span></code> as well as the gstreamer dependencies so it
should look something like:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">coll</span> <span class="o">=</span> <span class="n">COLLECT</span><span class="p">(</span><span class="n">exe</span><span class="p">,</span> <span class="n">Tree</span><span class="p">(</span><span class="s1">'examples-path</span><span class="se">\\</span><span class="s1">widgets'</span><span class="p">),</span>
<span class="n">a</span><span class="o">.</span><span class="n">binaries</span><span class="p">,</span>
<span class="n">a</span><span class="o">.</span><span class="n">zipfiles</span><span class="p">,</span>
<span class="n">a</span><span class="o">.</span><span class="n">datas</span><span class="p">,</span>
<span class="o">*</span><span class="p">[</span><span class="n">Tree</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="p">(</span><span class="n">sdl2</span><span class="o">.</span><span class="n">dep_bins</span> <span class="o">+</span> <span class="n">glew</span><span class="o">.</span><span class="n">dep_bins</span> <span class="o">+</span> <span class="n">gstreamer</span><span class="o">.</span><span class="n">dep_bins</span><span class="p">)],</span>
<span class="n">strip</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">upx</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">name</span><span class="o">=</span><span class="s1">'gstvideo'</span><span class="p">)</span>
</pre></div>
</div>
<p>Then build the spec file in <code class="docutils literal notranslate"><span class="pre">VideoPlayer</span></code> with:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">PyInstaller</span> <span class="n">gstvideo</span><span class="o">.</span><span class="n">spec</span>
</pre></div>
</div>
<p>and you should find gstvideo.exe in <code class="docutils literal notranslate"><span class="pre">VideoPlayer\dist\gstvideo</span></code>,
which when run will play a video.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If youre using Pygame and need PyGame in your packaging app, youll have
to add the following code to your spec file due to kivy issue #1638. After
the imports add the following:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">getResource</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="k">if</span> <span class="n">identifier</span> <span class="o">==</span> <span class="s1">'pygame_icon.tiff'</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">()</span>
<span class="k">return</span> <span class="n">_original_getResource</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="kn">import</span> <span class="nn">pygame.pkgdata</span>
<span class="n">_original_getResource</span> <span class="o">=</span> <span class="n">pygame</span><span class="o">.</span><span class="n">pkgdata</span><span class="o">.</span><span class="n">getResource</span>
<span class="n">pygame</span><span class="o">.</span><span class="n">pkgdata</span><span class="o">.</span><span class="n">getResource</span> <span class="o">=</span> <span class="n">getResource</span>
</pre></div>
</div>
</div>
</section>
</section>
<section id="overwriting-the-default-hook">
<span id="overwrite-win-hook"></span><h1>Overwriting the default hook<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#overwriting-the-default-hook" title="Permalink to this headline"></a></h1>
<section id="including-excluding-video-and-audio-and-reducing-app-size">
<h2>Including/excluding video and audio and reducing app size<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#including-excluding-video-and-audio-and-reducing-app-size" title="Permalink to this headline"></a></h2>
<p>PyInstaller includes a hook for kivy that by default adds <strong>all</strong> the core
modules used by kivy, e.g. audio, video, spelling etc (you still need to
package the gstreamer dlls manually with <code class="docutils literal notranslate"><span class="pre">Tree()</span></code> - see the example above)
and their dependencies. If the hook is not installed or to reduce app size some
of these modules may be excluded, e.g. if no audio/video is used, with
an alternative hook.</p>
<p>Kivy provides the alternate hook at
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.hookspath" title="kivy.tools.packaging.pyinstaller_hooks.hookspath"><code class="xref py py-func docutils literal notranslate"><span class="pre">hookspath()</span></code></a>. In addition, if and
only if PyInstaller doesnt have the default hooks
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.runtime_hooks" title="kivy.tools.packaging.pyinstaller_hooks.runtime_hooks"><code class="xref py py-func docutils literal notranslate"><span class="pre">runtime_hooks()</span></code></a> must also be
provided. When overwriting the hook, the latter one typically is not required
to be overwritten.</p>
<p>The alternate <a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.hookspath" title="kivy.tools.packaging.pyinstaller_hooks.hookspath"><code class="xref py py-func docutils literal notranslate"><span class="pre">hookspath()</span></code></a> hook
does not include any of the kivy providers. To add them, they have to be added
with
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.get_deps_minimal" title="kivy.tools.packaging.pyinstaller_hooks.get_deps_minimal"><code class="xref py py-func docutils literal notranslate"><span class="pre">get_deps_minimal()</span></code></a> or
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.get_deps_all" title="kivy.tools.packaging.pyinstaller_hooks.get_deps_all"><code class="xref py py-func docutils literal notranslate"><span class="pre">get_deps_all()</span></code></a>. See
their documentation and <a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#module-kivy.tools.packaging.pyinstaller_hooks" title="kivy.tools.packaging.pyinstaller_hooks"><code class="xref py py-mod docutils literal notranslate"><span class="pre">pyinstaller_hooks</span></code></a> for more
details. But essentially,
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.get_deps_all" title="kivy.tools.packaging.pyinstaller_hooks.get_deps_all"><code class="xref py py-func docutils literal notranslate"><span class="pre">get_deps_all()</span></code></a> add all the
providers like in the default hook while
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.get_deps_minimal" title="kivy.tools.packaging.pyinstaller_hooks.get_deps_minimal"><code class="xref py py-func docutils literal notranslate"><span class="pre">get_deps_minimal()</span></code></a> only adds
those that are loaded when the app is run. Each method provides a list of
hidden kivy imports and excluded imports that can be passed on to <code class="docutils literal notranslate"><span class="pre">Analysis</span></code>.</p>
<p>One can also generate a alternate hook which literally lists every kivy
provider module and those not required can be commented out. See
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#module-kivy.tools.packaging.pyinstaller_hooks" title="kivy.tools.packaging.pyinstaller_hooks"><code class="xref py py-mod docutils literal notranslate"><span class="pre">pyinstaller_hooks</span></code></a>.</p>
<p>To use the the alternate hooks with the examples above modify as following to
add the hooks with <code class="docutils literal notranslate"><span class="pre">hookspath()</span></code> and <code class="docutils literal notranslate"><span class="pre">runtime_hooks</span></code> (if required)
and <code class="docutils literal notranslate"><span class="pre">**get_deps_minimal()</span></code> or <code class="docutils literal notranslate"><span class="pre">**get_deps_all()</span></code> to specify the providers.</p>
<p>For example, add the import statement:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">kivy.tools.packaging.pyinstaller_hooks</span> <span class="kn">import</span> <span class="n">get_deps_minimal</span><span class="p">,</span> <span class="n">get_deps_all</span><span class="p">,</span> <span class="n">hookspath</span><span class="p">,</span> <span class="n">runtime_hooks</span>
</pre></div>
</div>
<p>and then modify <code class="docutils literal notranslate"><span class="pre">Analysis</span></code> as follows:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">a</span> <span class="o">=</span> <span class="n">Analysis</span><span class="p">([</span><span class="s1">'examples-path</span><span class="se">\\</span><span class="s1">demo</span><span class="se">\\</span><span class="s1">touchtracer</span><span class="se">\\</span><span class="s1">main.py'</span><span class="p">],</span>
<span class="o">...</span>
<span class="n">hookspath</span><span class="o">=</span><span class="n">hookspath</span><span class="p">(),</span>
<span class="n">runtime_hooks</span><span class="o">=</span><span class="n">runtime_hooks</span><span class="p">(),</span>
<span class="o">...</span>
<span class="o">**</span><span class="n">get_deps_all</span><span class="p">())</span>
</pre></div>
</div>
<p>to include everything like the default hook. Or:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">a</span> <span class="o">=</span> <span class="n">Analysis</span><span class="p">([</span><span class="s1">'examples-path</span><span class="se">\\</span><span class="s1">demo</span><span class="se">\\</span><span class="s1">touchtracer</span><span class="se">\\</span><span class="s1">main.py'</span><span class="p">],</span>
<span class="o">...</span>
<span class="n">hookspath</span><span class="o">=</span><span class="n">hookspath</span><span class="p">(),</span>
<span class="n">runtime_hooks</span><span class="o">=</span><span class="n">runtime_hooks</span><span class="p">(),</span>
<span class="o">...</span>
<span class="o">**</span><span class="n">get_deps_minimal</span><span class="p">(</span><span class="n">video</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">audio</span><span class="o">=</span><span class="kc">None</span><span class="p">))</span>
</pre></div>
</div>
<p>e.g. to exclude the audio and video providers and for the other core modules
only use those loaded.</p>
<p>The key points is to provide the alternate
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.hookspath" title="kivy.tools.packaging.pyinstaller_hooks.hookspath"><code class="xref py py-func docutils literal notranslate"><span class="pre">hookspath()</span></code></a> which does not list
by default all the kivy providers and instead manually to hiddenimports
add the required providers while removing the undesired ones (audio and
video in this example) with
<a class="reference internal" href="https://kivy.org/doc/stable/api-kivy.tools.packaging.pyinstaller_hooks.html#kivy.tools.packaging.pyinstaller_hooks.get_deps_minimal" title="kivy.tools.packaging.pyinstaller_hooks.get_deps_minimal"><code class="xref py py-func docutils literal notranslate"><span class="pre">get_deps_minimal()</span></code></a>.</p>
</section>
<section id="alternate-installations">
<h2>Alternate installations<a class="headerlink" href="https://kivy.org/doc/stable/guide/packaging-windows.html#alternate-installations" title="Permalink to this headline"></a></h2>
<p>The previous examples used e.g.
<code class="docutils literal notranslate"><span class="pre">*[Tree(p)</span> <span class="pre">for</span> <span class="pre">p</span> <span class="pre">in</span> <span class="pre">(sdl2.dep_bins</span> <span class="pre">+</span> <span class="pre">glew.dep_bins</span> <span class="pre">+</span> <span class="pre">gstreamer.dep_bins)],</span></code>
to make PyInstaller add all the dlls used by these dependencies. If kivy
was not installed using the wheels method these commands will not work and e.g.
<code class="docutils literal notranslate"><span class="pre">kivy_deps.sdl2</span></code> will fail to import. Instead, one must find the location
of these dlls and manually pass them to the <code class="docutils literal notranslate"><span class="pre">Tree</span></code> class in a similar fashion
as the example.</p>
</section>
</section>
<div class="footerlinks">
<table>
<tbody><tr>
<td class="leftlink">
<a href="https://kivy.org/doc/stable/guide/packaging.html" title="previous chapter">« Packaging your application</a>
</td>
<td class="rightlink">
<a href="https://kivy.org/doc/stable/guide/packaging-android.html" title="next chapter">Create a package for Android »</a>
</td>
</tr>
</tbody></table>
</div>
</div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
</div>
<!-- Piwik -->
<script>
var _paq = _paq || [];
_paq.push(['setDomains', '*.kivy.org']);
_paq.push(['setCookieDomain', '*.kivy.org']);
_paq.push(['enableHeartBeatTimer', 60]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//pw.kivy.org/";
_paq.push(['setTrackerUrl', u+'pw.php']);
_paq.push(['setSiteId', 4]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'pw.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<script>
var selector = $("#version_selector");
selector.on('change', function() {
// replace the version part of the url with the selected version
document.location.pathname = document.location.pathname.replace(
/^(\/.*?\/).*?(\/.*)/,
'$1' + this.value + '$2'
);
});
var url = "/doc/versions.json";
$.getJSON(url, function(versions) {
versions.forEach(function(version){
var current = window.location.pathname.split('/')[2]
selector.append(
$("<option " + (version == current ? "selected" : "") + "/>").val(version).html(version)
);
});
});
</script>
<noscript><p><img src="//pw.kivy.org/pw.php?idsite=4&rec=1" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Tracking Code -->
<!--
<div class="footer">
&copy; Copyright 2010, The Kivy Authors.
Last updated on Nov 10, 2021.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 4.2.0.
</div>
-->
</body></html>
-31
View File
@@ -1,31 +0,0 @@
_____ _ _
/ ____| | | |
| | | |__ __ _ _ __ __ _ ___ | | ___ __ _
| | | '_ \ / _` | '_ \ / _` |/ _ \ | | / _ \ / _` |
| |____| | | | (_| | | | | (_| | __/ | |___| (_) | (_| |
\_____|_| |_|\__,_|_| |_|\__, |\___| |______\___/ \__, |
__/ | __/ |
|___/ |___/
Beeps V1.0 - 05/03/2021
- Initial release
Beeps V2.0 - xx/xx/2021
Beeps V2.1 - xx/xx/2021
Beeps V2.2 - 05/07/2023
- Fixed a bug where the 'always on top' feature didn't work when you had multiple beeps open.
Beeps V2.3 - 11/07/2023
- Variables are now read in through a Configuration.ini
- Customisable timing thresholds and strings
- Better error handling when the beep log cannot be reached
-15
View File
@@ -1,15 +0,0 @@
[GENERAL]
BeepDetailsDirectory = \\192.168.0.133\RealTimeTennis\DataBridge1\Logs\BounceDetails_1.log
CourtName = CHANGE ME
[THRESHOLDS]
Thresh1 = 120
Thresh1str = Cheating?
Thresh2 = 150
Thresh2str = Looking good
Thresh3 = 250
Thresh3str = Little slow
Thresh4 = 350
Thresh4str = Noticeable slow
Thresh5 = 351
Thresh5str = Help!!!
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

-327
View File
@@ -1,327 +0,0 @@
import kivy
import time
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivy.core.window import Window
from kivy.config import Config
from tkinter import filedialog
from tkinter import simpledialog
from KivyOnTop import register_topmost, unregister_topmost
import configparser
from tkinter import *
#Configuration loading
config = configparser.ConfigParser()
config.read('Configuration.ini')
# Accessing variables from the 'GENERAL' section
Court_name = str(config['GENERAL']['CourtName'])
filePath = str(config['GENERAL']['BeepDetailsDirectory'])
print(filePath)
if filePath == "\\\\0.0.0.0\\RealTimeTennis\\DataBridge1\\Logs\\BounceDetails_1.log":
print(chr(27) + "[2J")
print("##################################################")
print("You have not changed the default Configuration.ini")
print("Please change the IP")
print("##################################################")
input()
exit()
# Accessing variables from the 'THRESHOLDS' section
Thresh1 = int(config['THRESHOLDS']['Thresh1'])
Thresh2 = int(config['THRESHOLDS']['Thresh2'])
Thresh3 = int(config['THRESHOLDS']['Thresh3'])
Thresh4 = int(config['THRESHOLDS']['Thresh4'])
Thresh5 = int(config['THRESHOLDS']['Thresh5'])
Thresh1str = str(config['THRESHOLDS']['Thresh1str'])
Thresh2str = str(config['THRESHOLDS']['Thresh2str'])
Thresh3str = str(config['THRESHOLDS']['Thresh3str'])
Thresh4str = str(config['THRESHOLDS']['Thresh4str'])
Thresh5str = str(config['THRESHOLDS']['Thresh5str'])
root = Tk()
root.withdraw()
print("Court Name: " + Court_name)
print("BeepDetails Directory: "+ filePath)
Builder.load_string("""
<MySec>:
rgba: (1,.2,.2,.2)
orientation: 'vertical'
Label:
id: Court_name
text: root.Court_name
font_size: 30
size_hint:(1,.2)
bold: True
canvas.before:
Color:
rgba: root.rgba
Rectangle:
size: self.size
pos: self.pos
Label:
id: kv_sec
text: root.seconds_string
font_size: 70
size_hint:(1,.5)
canvas.before:
Color:
rgba: root.rgba
Rectangle:
size: self.size
pos: self.pos
Label:
id: average
text: root.average
font_size: 25
size_hint:(1,.2)
canvas.before:
Color:
rgba: root.rgba
Rectangle:
size: self.size
pos: self.pos
Label:
id: info
text: root.info
font_size: 30
size_hint:(1,.2)
bold: True
canvas.before:
Color:
rgba: root.rgba
Rectangle:
size: self.size
pos: self.pos
""")
Window.size = (300, 300)
list = [0] * 10
class MySec(BoxLayout):
seconds_string = StringProperty('')
info = StringProperty('')
average = StringProperty('')
Court_name = StringProperty('')
Config.set('kivy','window_icon','./beeps.ico')
Config.set('graphics', 'always_on_top','1')
#Config.set('graphics','position', 'custom' )
Config.set('graphics','left',10)
Config.set('graphics','top',50)
Config.set('graphics','height',300)
Config.set('graphics','width',300)
Config.write()
#rgba = StringProperty('')
class MyApp(App):
def build(self):
self.title = 'Beeper V2.3'
Clock.schedule_interval(lambda dt: self.update_time(), 0.5)
return MySec()
def update_time(self):
if list[9] != 0:
del list[9]
else:
self.root.Court_name = Court_name
try:
with open(filePath,'r') as f:
lastLine = None
lines = f.readlines()
if lines[-1] != lastLine:
lastLine = lines[-1]
BC = lastLine.find("Bounce Count")
BC = lastLine[BC+14:BC+15]
BC = int(BC)
if BC == 0:
CN = lastLine.find("Crosses Net")
CN = lastLine[CN+13:CN+17]
if CN == 'true':
diff = lastLine.find("Time Diff")
diff = lastLine[diff+11:diff+19]
diff = float(diff)
diff = round((diff * 1000),1)
if diff <= Thresh1:
diff1 = (str(diff)+'ms')
self.root.seconds_string = diff1
self.root.info = Thresh1str
if list[0] != diff:
list.insert(0,diff)
avg = str(round((sum(list)/10),1))
self.root.average = ('10 beep average:' + avg)
self.root.rgba = [218/255,165/255,32/255,1]
else:
pass
elif ((diff > Thresh1) and (diff <= Thresh2)):
diff1 = (str(diff)+'ms')
self.root.seconds_string = diff1
self.root.info = Thresh2str
if list[0] != diff:
list.insert(0,diff)
avg = str(round((sum(list)/10),1))
self.root.average = ('10 beep average:' + avg)
self.root.rgba = [19/255,229/255,19/255,1]
else:
pass
elif ((diff > Thresh2) and (diff <= Thresh3)):
diff1 = (str(diff)+'ms')
self.root.seconds_string = diff1
self.root.info = Thresh3str
if list[0] != diff:
list.insert(0,diff)
avg = str(round((sum(list)/10),1))
self.root.average = ('10 beep average:' + avg)
self.root.rgba = [235/255,116/255,19/255,1]
else:
pass
elif ((diff > Thresh3) and (diff <= Thresh4)):
diff1 = (str(diff)+'ms')
self.root.seconds_string = diff1
self.root.info = Thresh4str
if list[0] != diff:
list.insert(0,diff)
avg = str(round((sum(list)/10),1))
self.root.average = ('10 beep average:' + avg)
self.root.rgba = [219/255,0/255,0/255,1]
else:
pass
elif diff > Thresh5:
diff1 = (str(diff)+'ms')
self.root.seconds_string = diff1
self.root.info = Thresh5str
if list[0] != diff:
list.insert(0,diff)
avg = str(round((sum(list)/10),1))
self.root.average = ('10 beep average:' + avg)
self.root.rgba = [90/255,4/255,4/255,1]
else:
pass
else:
pass
else:
pass
except:
print(chr(27) + "[2J")
print("#################################################################################")
print(filePath + "Is not reachable, please check its accessible through file explorer")
input()
exit()
if __name__ == '__main__':
MyApp().run()