如何将python gui应用程序作为ubuntu服务运行?

时间:2019-03-04 17:23:45

标签: python-3.x user-interface ubuntu tkinter service

Evn = Ubuntu 18.04 64bit(Desktop)

文件:“ / home / kwan / python / client.py”

#!/usr/bin/python3
# encoding: utf-8

import socket
from time import sleep


class sock:
    def __init__(self, target):
        self.target = (target, 6666)
        self.flag = "alive"

    def keep_conn(self):
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            try:
                s.connect(self.target)
                s.send(self.flag.encode("utf8"))
                print("conn success!")
            except Exception as err:
                print(err)


if __name__ == '__main__':
client_sock = sock("192.168.1.144")
try:
    print("Press Ctrl + C to stop")
    while True:
        client_sock.keep_conn()
        # sleep(1)
except KeyboardInterrupt:
    print("stop")
    exit(1)
except Exception as err:
    print(err)

文件:“ / etc / systemd / system / autorun.service”

编辑:

[Unit]
Description=AutoRun
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/home/kwan/python
ExecStart=/usr/bin/python3 /home/kwan/python/client.py
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

终端命令:

sudo systemctl enable autorun.service
sudo systemctl daemon-reload
sudo service autorun start

它可以工作!

但是当我创建一个tkinter gui脚本时:

文件:/home/kwan/python/gui.py

#!/usr/bin/python3
# encoding: utf-8

import tkinter as tk

if __name__ == '__main__':
    window = tk.Tk()
    window.geometry('300x200')
    window.mainloop()

像以前一样编辑服务文件,但是什么也没发生。

它可以在终端命令上运行并显示一个窗口:

python3 /home/kwan/python/gui.py

文件:“ / etc / systemd / system / mygui.service”

编辑:

[Unit]
Description=MyGUI
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/home/kwan/python
ExecStart=/usr/bin/python3 /home/kwan/python/gui.py
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

终端命令:

sudo systemctl enable mygui.service
sudo systemctl daemon-reload
sudo service mygui start

有人知道为什么服务在运行,但没有gui显示吗?

0 个答案:

没有答案