GUI tutorial: Difference between revisions
| (9 intermediate revisions by the same user not shown) | |||
| Line 14: | Line 14: | ||
''Note: Kodi uses the term "Built-In Functions" in its documentation. These are Kodi commands executed through the Python function xbmc.executebuiltin(). They should not be confused with Python's built-in functions, such as print().''<br> | ''Note: Kodi uses the term "Built-In Functions" in its documentation. These are Kodi commands executed through the Python function xbmc.executebuiltin(). They should not be confused with Python's built-in functions, such as print().''<br> | ||
=== using xbmc === | === using xbmc === | ||
This is a one liner | This is the simplest version of the program, a "one liner", which however does all the magic. | ||
<syntaxhighlight lang="python" style="background: white; color: black;" line start="1"> | <syntaxhighlight lang="python" style="background: white; color: black;" line start="1"> | ||
| Line 21: | Line 21: | ||
1 import xbmc | 1 import xbmc | ||
2 | 2 | ||
3 xbmc.executebuiltin('Notification(Hello World,This is a simple example of notifications,5000,/ | 3 xbmc.executebuiltin('Notification(Hello World,This is a simple example of notifications,5000,/hello.world.png)') | ||
4 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== using xbmc and xbmcaddon module === | |||
This example extends the previous one by using the xbmcaddon module to retrieve the add-on's name and icon dynamically, while defining the notification message and display duration using variables. | |||
__addon__ = xbmcaddon.Addon() | <syntaxhighlight lang="python" style="background: white; color: black;" line start="1"> | ||
__addonname__ = __addon__.getAddonInfo('name') | 1 import xbmc | ||
__icon__ = __addon__.getAddonInfo('icon') | 2 import xbmcaddon | ||
3 | |||
line1 = " | 4 __addon__ = xbmcaddon.Addon() | ||
time = 5000 # | 5 __addonname__ = __addon__.getAddonInfo('name') | ||
6 __icon__ = __addon__.getAddonInfo('icon') | |||
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(__addonname__,line1, time, __icon__)) | 7 | ||
</ | 8 line1 = "Hello World! We can write anything we want here Using Python" | ||
9 time = 5000 # milliseconds | |||
10 | |||
11 xbmc.executebuiltin( | |||
12 'Notification(%s, %s, %d, %s)' | |||
13 % (__addonname__, line1, time, __icon__) | |||
14 ) | |||
</syntaxhighlight> | |||
=== using xbmcgui | === using xbmcgui === | ||
This will show a OK dialog box with the message. | This will show a OK dialog box with the message.<br> | ||
More info on xbmcgui functions can be found here: [ http://mirrors.xbmc.org/docs/python-docs/16.x-jarvis/xbmcgui.html#Dialog ] | More info on xbmcgui functions can be found here: [ http://mirrors.xbmc.org/docs/python-docs/16.x-jarvis/xbmcgui.html#Dialog ] | ||
< | <syntaxhighlight lang="python" style="background: white; color: black;" line start="1"> | ||
import xbmcaddon | 1 import xbmcaddon | ||
import xbmcgui | 2 import xbmcgui | ||
3 | |||
__addon__ = xbmcaddon.Addon() | 4 __addon__ = xbmcaddon.Addon() | ||
__addonname__ = __addon__.getAddonInfo('name') | 5 __addonname__ = __addon__.getAddonInfo('name') | ||
6 | |||
line1 = "This is a simple example of OK dialog" | 7 line1 = "This is a simple example of OK dialog" | ||
line2 = "Showing this message using" | 8 line2 = "Showing this message using" | ||
line3 = "XBMC python modules" | 9 line3 = "XBMC python modules" | ||
10 | |||
xbmcgui.Dialog().ok(__addonname__, line1, line2, line3) | 11 xbmcgui.Dialog().ok(__addonname__, line1, line2, line3) | ||
</ | </syntaxhighlight> | ||
== Using JSON-RPC == | == Using JSON-RPC == | ||
Latest revision as of 10:02, 27 October 2026
Introduction
Building on the first Hello World tutorial, this guide explores different ways to create the graphical user interface (GUI) for the Hello World example in Kodi. It introduces several approaches to displaying a simple message on screen, explaining how each method works and highlighting the differences between them.
Examples
Using Kodi's Python API
The following three examples demonstrate different ways to display a notification in Kodi. In each example, the notification displays a message for five seconds.
More info on Built-In functions can be found in the List of built-in functions
Note: Kodi uses the term "Built-In Functions" in its documentation. These are Kodi commands executed through the Python function xbmc.executebuiltin(). They should not be confused with Python's built-in functions, such as print().
using xbmc
This is the simplest version of the program, a "one liner", which however does all the magic.
1 import xbmc
2
3 xbmc.executebuiltin('Notification(Hello World,This is a simple example of notifications,5000,/hello.world.png)')
4
using xbmc and xbmcaddon module
This example extends the previous one by using the xbmcaddon module to retrieve the add-on's name and icon dynamically, while defining the notification message and display duration using variables.
1 import xbmc
2 import xbmcaddon
3
4 __addon__ = xbmcaddon.Addon()
5 __addonname__ = __addon__.getAddonInfo('name')
6 __icon__ = __addon__.getAddonInfo('icon')
7
8 line1 = "Hello World! We can write anything we want here Using Python"
9 time = 5000 # milliseconds
10
11 xbmc.executebuiltin(
12 'Notification(%s, %s, %d, %s)'
13 % (__addonname__, line1, time, __icon__)
14 )
using xbmcgui
This will show a OK dialog box with the message.
More info on xbmcgui functions can be found here: [ http://mirrors.xbmc.org/docs/python-docs/16.x-jarvis/xbmcgui.html#Dialog ]
1 import xbmcaddon
2 import xbmcgui
3
4 __addon__ = xbmcaddon.Addon()
5 __addonname__ = __addon__.getAddonInfo('name')
6
7 line1 = "This is a simple example of OK dialog"
8 line2 = "Showing this message using"
9 line3 = "XBMC python modules"
10
11 xbmcgui.Dialog().ok(__addonname__, line1, line2, line3)
Using JSON-RPC
Using xbmc modules & JSON-RPC API
More info on JSON-RPC API can be found here: JSON-RPC API
This JSON-RPC command send through various ways and will execute the addon code that is shown below.
{
"jsonrpc": "2.0",
"id": 0,
"method": "Addons.ExecuteAddon",
"params": {
"addonid": "script.popup",
"params": {
"image": "D:\\heartagram.jpg",
"line1": "Hello World",
"line2": "Showing this message using",
"line3": "Combination of Kodi python modules and",
"line4": "JSON-RPC API interface",
"line5": "Have fun coding"
}
}
}
This python code will create several controls using xbmcgui module and fill these will the message send through JSON-RPC:
import xbmcgui
import sys
import urlparse
class PopupWindow(xbmcgui.WindowDialog):
def __init__(self, image, line1, line2, line3, line4, line5):
self.addControl(xbmcgui.ControlImage(x=25, y=25, width=150, height=150, filename=image[0]))
self.addControl(xbmcgui.ControlLabel(x=190, y=25, width=500, height=25, label=line1[0]))
self.addControl(xbmcgui.ControlLabel(x=190, y=50, width=500, height=25, label=line2[0]))
self.addControl(xbmcgui.ControlLabel(x=190, y=75, width=500, height=25, label=line3[0]))
self.addControl(xbmcgui.ControlLabel(x=190, y=100, width=500, height=25, label=line4[0]))
self.addControl(xbmcgui.ControlLabel(x=190, y=125, width=500, height=25, label=line5[0]))
if __name__ == '__main__':
params = urlparse.parse_qs('&'.join(sys.argv[1:]))
window = PopupWindow(**params)
window.show()
xbmc.sleep(5000)
window.close()
del window
See also
Development: