你如何在 python 中创建一个 gtk window 并且在后台有代码 运行?
How do you create a gtk window in python and also have code running in the background?
我正在尝试创建一个 GUI window,里面有一个网址(在这种情况下是一个视频流),同时在后台还有一些额外的代码 运行 与 GPIO 端口通信在 Raspberry Pi 上。我可以让 window 工作,但后台代码仅在 window 关闭时启动。或者,如果我颠倒代码的顺序,GPIO 代码将在 window 打开时停止工作。这是一些示例代码。
import gtk
import webkit
import gobject
import RPi.GPIO as GPIO
from time import sleep
import os
ip = raw_input("Enter the last 3 digits of IP address: ")
awesome = "http://192.168.0." + ip + ":9090/stream"
print awesome
os.system("sudo uv4l -nopreview --auto-video_nr --driver raspicam --encoding mjpeg --width 640 --height 480 --framerate 30 --server-option '--port=9090' --server-option '--max-queued-connections=30' --server-option '--max-streams=25' --server-option '--max-threads=29'")
gobject.threads_init()
win = gtk.Window()
win.connect('destroy', lambda w: gtk.main_quit())
bro = webkit.WebView()
bro.open(awesome)
win.add(bro)
win.show_all()
gtk.main()
GPIO.setmode(GPIO.BOARD)
GPIO.setup(38, GPIO.OUT)
GPIO.setup(40, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)
GPIO.setup(35, GPIO.OUT)
GPIO.output(38, GPIO.HIGH)
GPIO.output(40, GPIO.LOW)
GPIO.output(37, GPIO.LOW)
GPIO.output(35, GPIO.HIGH)
sleep(2)
gtk.main()
运行s 直到你关闭 window(它是调用 "main loop" 或 "event loop" 并且它在 GUI 程序中做所有事情 - 得到 key/mouse 事件,将它发送到小部件,重绘小部件,运行 当你按下按钮时函数等)。
您必须同时使用 Threading
到 运行 (long-运行ning) 代码或在 GUI 中使用一些 Timer
class定期执行一些代码。
我正在尝试创建一个 GUI window,里面有一个网址(在这种情况下是一个视频流),同时在后台还有一些额外的代码 运行 与 GPIO 端口通信在 Raspberry Pi 上。我可以让 window 工作,但后台代码仅在 window 关闭时启动。或者,如果我颠倒代码的顺序,GPIO 代码将在 window 打开时停止工作。这是一些示例代码。
import gtk
import webkit
import gobject
import RPi.GPIO as GPIO
from time import sleep
import os
ip = raw_input("Enter the last 3 digits of IP address: ")
awesome = "http://192.168.0." + ip + ":9090/stream"
print awesome
os.system("sudo uv4l -nopreview --auto-video_nr --driver raspicam --encoding mjpeg --width 640 --height 480 --framerate 30 --server-option '--port=9090' --server-option '--max-queued-connections=30' --server-option '--max-streams=25' --server-option '--max-threads=29'")
gobject.threads_init()
win = gtk.Window()
win.connect('destroy', lambda w: gtk.main_quit())
bro = webkit.WebView()
bro.open(awesome)
win.add(bro)
win.show_all()
gtk.main()
GPIO.setmode(GPIO.BOARD)
GPIO.setup(38, GPIO.OUT)
GPIO.setup(40, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)
GPIO.setup(35, GPIO.OUT)
GPIO.output(38, GPIO.HIGH)
GPIO.output(40, GPIO.LOW)
GPIO.output(37, GPIO.LOW)
GPIO.output(35, GPIO.HIGH)
sleep(2)
gtk.main()
运行s 直到你关闭 window(它是调用 "main loop" 或 "event loop" 并且它在 GUI 程序中做所有事情 - 得到 key/mouse 事件,将它发送到小部件,重绘小部件,运行 当你按下按钮时函数等)。
您必须同时使用 Threading
到 运行 (long-运行ning) 代码或在 GUI 中使用一些 Timer
class定期执行一些代码。