Далі тестується Ubuntu 13.04 та Python системи, використовуючи прив'язки Gtk (PyGobject).
Ось один із способів, які трохи забруднені, і це потребує більшого розслідування:
Підсумок
Додайте .desktop
файл на, /usr/share/xsessions
ми його назвемоcustom
Додайте .xsession
файл у відповідного користувача (ваших дітей), який ми назвемо як йогоkid
Створіть додаток Python GUI для математичної головоломки та запустіть її .xsession
, ми назвемо її якpuzzle.py
Деталі
sudo vi /usr/share/xsessions/custom.desktop
Додайте у файл наступне:
[Desktop Entry]
Name=Custom
Comment=This session logs you into your managed desktop environment
Exec=/etc/X11/Xsession
X-Ubuntu-Gettext-Domain=gnome-session-3.0
Додайте у файл наступне:
#!/bin/bash
lightdm &
exec /home/kid/puzzle.py
Додайте у файл наступне:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
import random
from gi.repository import Gtk
#----------------------------------------------------------------------
class PuzzleWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Math Puzzle", resizable=False)
super(PuzzleWindow, self).set_position(Gtk.WindowPosition.CENTER)
super(PuzzleWindow, self).maximize()
self.a_number = random.randint(1, 5)
self.b_number = random.randint(1, 5)
self.result = self.a_number + self.b_number
self.vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
self.label = Gtk.Label("What is the sum of the numbers bellow?")
self.number_label = Gtk.Label("{num_a} + {num_b}".format(
num_a=self.a_number, num_b=self.b_number))
self.entry = Gtk.Entry()
self.button = Gtk.Button(label="Check answer!")
self.button.connect("clicked", self.on_button_clicked)
self.vbox.pack_start(self.label, True, True, 0)
self.vbox.pack_start(self.number_label, True, True, 0)
self.vbox.pack_start(self.entry, True, True, 0)
self.vbox.pack_start(self.button, True, True, 0)
self.add(self.vbox)
def on_button_clicked(self, widget):
if int(self.entry.get_text()) == self.result:
subprocess.call("unity &", shell=True)
else:
self.label.set_text("Wrong answer, try again.")
#----------------------------------------------------------------------
def main():
"""Application's entry point"""
win = PuzzleWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
if __name__ == "__main__":
main()
Результати:
- Якщо ви виходите з системи, на екрані входу ви побачите новий сеанс під назвою Custom.
- Вибравши призначений для користувача сеанс та після успішного входу, вам буде представлено невелике вікно PyGtk (за допомогою pygobject) із запитом математичної головоломки. Не буде верхньої панелі, запуску та інших віджетів на робочому столі за замовчуванням:
- Якщо ви відповісте правильно, Unity завантажить ...
Це потребує подальших досліджень, але я сподіваюся, що це допомагає як відправна точка.