You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pytqt/examples3/progressbar.py

156 lines
5.3 KiB

#!/usr/bin/env python
"""***********************************************************************
** $Id: progressbar.py,v 1.1 2003/06/10 14:51:24 phil Exp $
**
** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
**
** This file is part of an example program for TQt. This example
** program may be used, distributed and modified without limitation.
**
**************************************************************************"""
#import pdb
import sys
from qt import *
FALSE = 0
TRUE = 1
class ProgressBar( TQButtonGroup ):
# Constructor
# Creates child widgets of the ProgressBar widget
def __init__( self, parent=None, name=None ):
TQButtonGroup.__init__( self, 0, TQt.Horizontal, "Progress Bar", parent, name )
self.timer = TQTimer()
self.setMargin( 10 )
toplayout = TQGridLayout( self.layout(), 2, 2, 5)
self.setRadioButtonExclusive( TRUE )
# insert three radiobuttons which the user can use
# to set the speed of the progress and two pushbuttons
# to start/pause/continue and reset the progress
self.slow = TQRadioButton( "&Slow", self )
self.normal = TQRadioButton( "&Normal", self )
self.fast = TQRadioButton( "&Fast", self )
vb1 = TQVBoxLayout( )
toplayout.addLayout( vb1, 0, 0 )
vb1.addWidget( self.slow )
vb1.addWidget( self.normal )
vb1.addWidget( self.fast )
# two push buttons, one for start, for for reset.
self.start = TQPushButton( "&Start", self )
self.reset = TQPushButton( "&Reset", self )
vb2 = TQVBoxLayout()
toplayout.addLayout( vb2, 0, 1 )
vb2.addWidget( self.start )
vb2.addWidget( self.reset )
# Create the progressbar
self.progress = TQProgressBar( 100, self )
#self.progress.setStyle( TQMotifStyle() )
toplayout.addMultiCellWidget( self.progress, 1, 1, 0, 1 )
# connect the clicked() SIGNALs of the pushbuttons to SLOTs
self.connect( self.start, SIGNAL("clicked()"), self.slotStart )
self.connect( self.reset, SIGNAL("clicked()"), self.slotReset )
# connect the timeout() SIGNAL of the progress-timer to a SLOT
self.connect( self.timer, SIGNAL("timeout()"), self.slotTimeout )
# Let's start with normal speed...
self.normal.setChecked( TRUE )
# some contraints
self.start.setFixedWidth( 80 )
self.setMinimumWidth( 300 )
# SLOT slotStart
# This SLOT is called if the user clicks start/pause/continue button
def slotStart( self ):
# If the progress bar is at the beginning...
if self.progress.progress() == -1 :
# ...set according to the checked speed-radiobutton the
# the number of steps which are needed to complete the process
if self.slow.isChecked():
self.progress.setTotalSteps( 10000 )
elif self.normal.isChecked() :
self.progress.setTotalSteps( 1000 )
else :
self.progress.setTotalSteps( 50 )
# disable the speed-radiobuttons
self.slow.setEnabled( FALSE )
self.normal.setEnabled( FALSE )
self.fast.setEnabled( FALSE )
# If the progress is not running...
if not self.timer.isActive() :
# ...start the timer (and so the progress) with a interval of 1 ms...
self.timer.start( 1 )
# ...and rename the start/pause/continue button to Pause
self.start.setText( "&Pause" )
else : # if the prgress is running...
# ...stop the timer (and so the prgress)...
self.timer.stop()
# ...and rename the start/pause/continue button to Continue
self.start.setText( "&Continue" )
# SLOT slotReset
# This SLOT is called when the user clicks the reset button
def slotReset( self ):
# stop the timer and progress
self.timer.stop()
# rename the start/pause/continue button to Start...
self.start.setText( "&Start" )
# ...and enable this button
self.start.setEnabled( TRUE )
# enable the speed-radiobuttons
self.slow.setEnabled( TRUE )
self.normal.setEnabled( TRUE )
self.fast.setEnabled( TRUE )
# reset the progressbar
self.progress.reset()
# SLOT slotTimeout
# This SLOT is called each ms when the timer is
# active (== progress is running)
def slotTimeout( self ):
p = self.progress.progress()
# If the progress is complete...
if p == self.progress.totalSteps() :
# ...rename the start/pause/continue button to Start...
self.start.setText( "&Start" )
# ...and disable it...
self.start.setEnabled( FALSE )
# ...and return
return
# If the process is not complete increase it
p += 1
self.progress.setProgress( p )
#TQPushButton *start, *pause, *reset;
def main( args ):
a = TQApplication( args )
progressbar = ProgressBar()
progressbar.setCaption("TQt Example - ProgressBar")
a.setMainWidget(progressbar)
progressbar.show()
a.exec_loop()
if __name__=="__main__":
main(sys.argv)