#!/usr/bin/python # # Demonstration on how to use the GTK-server with Python by STDIN. # Tested with Python 2.3.4 on Slackware Linux 10. # # Feb 26, 2005 - PvE. # # Run with python. Start with 'python demo-stdin.py'. # #------------------------------------------------------------------- import os # The communication function def gtk (str): gtkout.write(str) gtkout.flush() return gtkin.readline() # Start the server (gtkout, gtkin) = os.popen2('gtk-server -stdin') # Build GUI gtk ("gtk_init NULL NULL") win = gtk ("gtk_window_new 0") gtk ("gtk_window_set_title " + win + " \"Python Demo program with STDIN\"") gtk ("gtk_widget_set_usize " + win + " 450 400") table = gtk("gtk_table_new 50 50 1") gtk ("gtk_container_add " + win + " " + table) button = gtk ("gtk_button_new_with_label Exit") gtk ("gtk_table_attach_defaults " + table + " " + button + " 41 49 45 49") entry = gtk ("gtk_entry_new") gtk ("gtk_table_attach_defaults " + table + " " + entry + " 1 40 45 49") text = gtk ("gtk_text_new NULL NULL") gtk ("gtk_table_attach_defaults " + table + " " + text + " 1 49 8 44") radio1 = gtk ("gtk_radio_button_new_with_label_from_widget NULL Yes") gtk ("gtk_table_attach_defaults " + table + " " + radio1 + " 1 10 1 4") radio2 = gtk ("gtk_radio_button_new_with_label_from_widget " + radio1 + " No") gtk ("gtk_table_attach_defaults " + table + " " + radio2 + " 1 10 4 7") gtk ("gtk_widget_show_all " + win) gtk ("gtk_widget_grab_focus " + entry) # Initialize event = 0 # Mainloop while event != button and event != win: event = gtk ("gtk_server_callback wait") if event == entry: tmp = gtk ("gtk_entry_get_text " + entry) gtk ("gtk_text_insert " + text + " NULL NULL NULL " + tmp + " -1") gtk ("gtk_entry_set_text " + entry + " \" \"") # Exit GTK-server gtk ("gtk_server_exit")