pygtk-进度条

#!/usr/bin/env python

# example progressbar.py

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

# Update the value of the progress bar so that we get
 # some movement
def progress_timeout(pbobj):
	if pbobj.activity_check.get_active():
		pbobj.pbar.pulse()
	else:
		 # Calculate the value of the progress bar using the
		 # value range set in the adjustment object
		new_val = pbobj.pbar.get_fraction() + 0.01
		if new_val > 1.0:
			new_val = 0.0
	# Set the new value
		pbobj.pbar.set_fraction(new_val)

	# As this is a timeout function, return TRUE so that it
	# continues to get called
	return True

class ProgressBar:
 # Callback that toggles the text display within the progress
 # bar trough
	def toggle_show_text(self, widget, data=None):
		if widget.get_active():
			self.pbar.set_text("some text")
		else:
			self.pbar.set_text("")

		# Callback that toggles the activity mode of the progress
		# bar
	def toggle_activity_mode(self, widget, data=None):
		if widget.get_active():
			self.pbar.pulse()
		else:
			self.pbar.set_fraction(0.0)

	# Callback that toggles the orientation of the progress bar
	def toggle_orientation(self, widget, data=None):
		if self.pbar.get_orientation() == gtk.PROGRESS_LEFT_TO_RIGHT:
			self.pbar.set_orientation(gtk.PROGRESS_RIGHT_TO_LEFT)
		elif self.pbar.get_orientation() == gtk.PROGRESS_RIGHT_TO_LEFT:
			self.pbar.set_orientation(gtk.PROGRESS_LEFT_TO_RIGHT)

	# Clean up allocated memory and remove the timer
	def destroy_progress(self, widget, data=None):
		gobject.source_remove(self.timer)
		self.timer = 0
		gtk.main_quit()

	def __init__(self):
		self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
		self.window.set_resizable(True)

		self.window.connect("destroy", self.destroy_progress)
		self.window.set_title("ProgressBar")
		self.window.set_border_width(0)
		vbox = gtk.VBox(False, 5)
		vbox.set_border_width(10)
		self.window.add(vbox)
		vbox.show()
	
		# Create a centering alignment object
		align = gtk.Alignment(0.5, 0.5, 0, 0)
		vbox.pack_start(align, False, False, 5)
		align.show()
		
		# Create the ProgressBar
		self.pbar = gtk.ProgressBar()
		
		align.add(self.pbar)
		self.pbar.show()
		
		# Add a timer callback to update the value of the progress bar
		self.timer = gobject.timeout_add (100, progress_timeout, self)
		
		separator = gtk.HSeparator()
		vbox.pack_start(separator, False, False, 0)
		separator.show()
		
		# rows, columns, homogeneous
		table = gtk.Table(2, 2, False)
		vbox.pack_start(table, False, True, 0)
		table.show()
		
		# Add a check button to select displaying of the trough text
		check = gtk.CheckButton("Show text")
		table.attach(check, 0, 1, 0, 1,
		gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL,
		5, 5)
		check.connect("clicked", self.toggle_show_text)
		check.show()
		
		# Add a check button to toggle activity mode
		self.activity_check = check = gtk.CheckButton("Activity mode")
		table.attach(check, 0, 1, 1, 2,
		gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL,
		5, 5)
		check.connect("clicked", self.toggle_activity_mode)
		check.show()
		
		# Add a check button to toggle orientation
		check = gtk.CheckButton("Right to Left")
		table.attach(check, 0, 1, 2, 3,
		gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL,
		5, 5)
		check.connect("clicked", self.toggle_orientation)
		check.show()
		
		# Add a button to exit the program
		button = gtk.Button("close")
		button.connect("clicked", self.destroy_progress)
		vbox.pack_start(button, False, False, 0)
		
		# This makes it so the button is the default.
		button.set_flags(gtk.CAN_DEFAULT)
		
		# This grabs this button to be the default button. Simply hitting
		# the "Enter" key will cause this button to activate.
		button.grab_default ()
		button.show()
		
		self.window.show()
	
def main():
	gtk.main()
	return 0
	
if __name__ == "__main__":
	ProgressBar()
	main()

 

 




 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值