58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# python/example3.py -- running NanoGUI in detached mode
 | 
						|
# (contributed by Dmitriy Morozov)
 | 
						|
#
 | 
						|
# NanoGUI was developed by Wenzel Jakob <wenzel@inf.ethz.ch>.
 | 
						|
# The widget drawing code is based on the NanoVG demo application
 | 
						|
# by Mikko Mononen.
 | 
						|
#
 | 
						|
# All rights reserved. Use of this source code is governed by a
 | 
						|
# BSD-style license that can be found in the LICENSE.txt file.
 | 
						|
 | 
						|
import nanogui
 | 
						|
from nanogui import *
 | 
						|
import time
 | 
						|
 | 
						|
 | 
						|
class TestApp(Screen):
 | 
						|
    def __init__(self):
 | 
						|
        super(TestApp, self).__init__((190, 170), "NanoGUI Test")
 | 
						|
 | 
						|
        window = Window(self, "Detached mode")
 | 
						|
        window.set_position((15, 15))
 | 
						|
        window.set_layout(GroupLayout())
 | 
						|
 | 
						|
        Label(window, "Push buttons", "sans-bold")
 | 
						|
        b = Button(window, "Plain button")
 | 
						|
 | 
						|
        def cb():
 | 
						|
            print("pushed!")
 | 
						|
        b.set_callback(cb)
 | 
						|
 | 
						|
        b = Button(window, "Quit")
 | 
						|
 | 
						|
        def cb2():
 | 
						|
            self.set_visible(False)
 | 
						|
        b.set_callback(cb2)
 | 
						|
 | 
						|
        self.perform_layout()
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    nanogui.init()
 | 
						|
    test = TestApp()
 | 
						|
    test.draw_all()
 | 
						|
    test.set_visible(True)
 | 
						|
 | 
						|
    print("Launching detached mainloop")
 | 
						|
    h = nanogui.mainloop(detach=test, refresh=0)
 | 
						|
 | 
						|
    print("Back in Python context")
 | 
						|
    for i in range(10):
 | 
						|
        print(i)
 | 
						|
        time.sleep(1)
 | 
						|
        if not nanogui.active():
 | 
						|
            break
 | 
						|
 | 
						|
    h.join()
 | 
						|
    nanogui.shutdown()
 |