A Simple GUI Example.
import os, sys, ROOT
def pygaus( x, par ):
import math
if (par[2] != 0.0):
arg1 = (x[0]-par[1])/par[2]
arg2 = (0.01*0.39894228)/par[2]
arg3 = par[0]/(1+par[3])
gauss = arg3*arg2*math.exp(-0.5*arg1*arg1)
else:
print 'returning 0'
gauss = 0.
return gauss
tpygaus = ROOT.TF1( 'pygaus', pygaus, -4, 4, 4 )
tpygaus.SetParameters( 1., 0., 1. )
def MyDraw():
btn = ROOT.BindObject( ROOT.gTQSender, ROOT.TGTextButton )
if btn.WidgetId() == 10:
global tpygaus, window
tpygaus.Draw()
ROOT.gPad.Update()
m = ROOT.TPyDispatcher( MyDraw )
class pMainFrame( ROOT.TGMainFrame ):
def __init__( self, parent, width, height ):
ROOT.TGMainFrame.__init__( self, parent, width, height )
self.Canvas = ROOT.TRootEmbeddedCanvas( 'Canvas', self, 200, 200 )
self.AddFrame( self.Canvas, ROOT.TGLayoutHints() )
self.ButtonsFrame = ROOT.TGHorizontalFrame( self, 200, 40 )
self.DrawButton = ROOT.TGTextButton( self.ButtonsFrame, '&Draw', 10 )
self.DrawButton.Connect( 'Clicked()', "TPyDispatcher", m, 'Dispatch()' )
self.ButtonsFrame.AddFrame( self.DrawButton, ROOT.TGLayoutHints() )
self.ExitButton = ROOT.TGTextButton( self.ButtonsFrame, '&Exit', 20 )
self.ExitButton.SetCommand( 'TPython::Exec( "raise SystemExit" )' )
self.ButtonsFrame.AddFrame( self.ExitButton, ROOT.TGLayoutHints() )
self.AddFrame( self.ButtonsFrame, ROOT.TGLayoutHints() )
self.SetWindowName( 'My first GUI' )
self.MapSubwindows()
self.Resize( self.GetDefaultSize() )
self.MapWindow()
def __del__(self):
self.Cleanup()
if __name__ == '__main__':
window = pMainFrame( ROOT.gClient.GetRoot(), 200, 200 )