Hi Christopher,

One way, and a fairly simple solution, would be to call convert_to_celcius immediately after initializing your object (self.convert_to_celcius(adj1) in __init__ after setting up the scroll bar). That should do what you need. It's been a while since I've used Python, but that should work.

Cheers,

Jody Steele

On Mon, 26 Jun 2006 13:10:04 -0400, Christopher Spears <[EMAIL PROTECTED]> wrote:

Here is a script that I wrote:

#!/usr/bin/python

import pygtk
pygtk.require('2.0')
import gtk

def scale_set_default_values(scale):
        scale.set_update_policy(gtk.UPDATE_CONTINUOUS)
        scale.set_digits(1)
        scale.set_value_pos(gtk.POS_LEFT)
        scale.set_draw_value(True)
        scale.set_sensitive(True)
        
class Conversion_GUI:
        
        def convert_to_celsius(self, adj):
                self.degC = (adj.value - 32)/1.8
                return self.degC
                
        
        def print_celsius(self, widget):
                print "Degrees Celsius: %.2f" % self.degC
                
                
        def __init__(self):
                self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
                self.window.connect("destroy", lambda w:
gtk.main_quit())
                self.window.set_title("Convert to Celsius")
                self.window.set_default_size(200,240)
                
                box1 = gtk.VBox(False, 0)
                self.window.add(box1)
                
                box2 = gtk.HBox(False, 10)
                box2.set_border_width(10)
                box1.pack_end(box2, True, True, 0)
                
                box3 = gtk.HBox(False, 10)
                box3.set_border_width(10)
                box1.pack_end(box3, True, True, 0)
                
                adj1 = gtk.Adjustment(32.0, 32.0, 213.0, 0.1, 1.0,
1.0)
                self.vscale = gtk.VScale(adj1)
                self.vscale.set_size_request(20, 300)
                scale_set_default_values(self.vscale)
                box1.pack_start(self.vscale, True, True, 0)
                
        
adj1.connect("value_changed",self.convert_to_celsius)
                
                quit_button = gtk.Button("Quit")
                quit_button.connect("clicked", lambda
w:gtk.main_quit())
                convert_button = gtk.Button("Convert")
                convert_button.connect("clicked",
self.print_celsius)
                box3.pack_start(convert_button, True, True, 0)
                box2.pack_start(quit_button, True, True, 0)
                
                self.vscale.show()
                convert_button.show()
                quit_button.show()
                box3.show()
                box2.show()
                box1.show()
                self.window.show()
                
        def main(self):
                gtk.main()
                return 0
        
if __name__ == '__main__':
        convert = Conversion_GUI()
        convert.main()

The script creates a gui with a vertical scrollbar and
two buttons (Convert and Quit).  Using the scrollbar,
I can select a value in degrees Fahrenheit.  Then I
can convert this and print it to the screen using the
Convert button.  However, when I first start the
program and press the convert button without moving
the scrollbar, I get an error message:

Traceback (most recent call last):
File "C:\Documents and Settings\Christopher Spears\My
Documents\programming\PythonScripts\convertCelsius.py",
line 22, in print_celsius
    print "Degrees Celsius: %.2f" % self.degC
AttributeError: Conversion_GUI instance has no
attribute 'degC'

My guess is since the scrollbar has not been moved yet
degC has not been computed, which causes the error
when Convert is pressed.  Can someone advise me on a
solution?  Sorry if this is a basic question.  I'm new
to pygtk.

_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/




--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to