⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 docgen_tutorial.py

📁 Urwid is a Python library for making text console applications. It has many features including fluid
💻 PY
📖 第 1 页 / 共 2 页
字号:
#!/usr/bin/python## Urwid tutorial documentation generation program#    Copyright (C) 2004-2007  Ian Ward##    This library is free software; you can redistribute it and/or#    modify it under the terms of the GNU Lesser General Public#    License as published by the Free Software Foundation; either#    version 2.1 of the License, or (at your option) any later version.##    This library is distributed in the hope that it will be useful,#    but WITHOUT ANY WARRANTY; without even the implied warranty of#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU#    Lesser General Public License for more details.##    You should have received a copy of the GNU Lesser General Public#    License along with this library; if not, write to the Free Software#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA## Urwid web site: http://excess.org/urwid/from __future__ import nested_scopesimport sysimport reimport osimport urwid.html_fragmentimport urwidtry:	import templayerexcept:	templayer = Noneexamples = {}interp_line = "#!/usr/bin/python\n\n"cut_comment = "# CUT HERE"examples["min"] = ["example_min"]def example_min():	import urwid.curses_display	import urwid	ui = urwid.curses_display.Screen()	def run():		canvas = urwid.TextCanvas(["Hello World"])		ui.draw_screen( (20, 1), canvas )				while not ui.get_input():			pass		ui.run_wrapper( run )examples["text"] = ["example_text"]def example_text():	import urwid.curses_display	import urwid	ui = urwid.curses_display.Screen()	def run():		cols, rows = ui.get_cols_rows()		txt = urwid.Text("Hello World", align="center")		fill = urwid.Filler( txt )		canvas = fill.render( (cols, rows) )		ui.draw_screen( (cols, rows), canvas )		while not ui.get_input():			pass	ui.run_wrapper( run )examples["attr"] = ["example_attr"]def example_attr():	import urwid.curses_display	import urwid	ui = urwid.curses_display.Screen()	ui.register_palette( [		('banner', 'black', 'light gray', ('standout', 'underline')),		('streak', 'black', 'dark red', 'standout'),		('bg', 'black', 'dark blue'),		] )	def run():		cols, rows = ui.get_cols_rows()		txt = urwid.Text(('banner', " Hello World "), align="center")		wrap1 = urwid.AttrWrap( txt, 'streak' )		fill = urwid.Filler( wrap1 )		wrap2 = urwid.AttrWrap( fill, 'bg' )		canvas = wrap2.render( (cols, rows) )		ui.draw_screen( (cols, rows), canvas )		while not ui.get_input():			pass	ui.run_wrapper( run )examples["resize"] = ["example_resize"]def example_resize():	import urwid.curses_display	import urwid	ui = urwid.curses_display.Screen()	ui.register_palette( [		('banner', 'black', 'light gray', ('standout', 'underline')),		('streak', 'black', 'dark red', 'standout'),		('bg', 'black', 'dark blue'),		] )	def run():		cols, rows = ui.get_cols_rows()		txt = urwid.Text(('banner', " Hello World "), align="center")		wrap1 = urwid.AttrWrap( txt, 'streak' )		fill = urwid.Filler( wrap1 )		wrap2 = urwid.AttrWrap( fill, 'bg' )		while True:			canvas = wrap2.render( (cols, rows) )			ui.draw_screen( (cols, rows), canvas )			keys = ui.get_input()			if "q" in keys or "Q" in keys:				break			if "window resize" in keys:				cols, rows = ui.get_cols_rows()		ui.run_wrapper( run )examples["edit"] = ["example_edit"]def example_edit():	import urwid.curses_display	import urwid	ui = urwid.curses_display.Screen()	def run():		cols, rows = ui.get_cols_rows()		ask = urwid.Edit("What is your name?\n")		fill = urwid.Filler( ask )		reply = None		while True:			canvas = fill.render( (cols, rows), focus=True )			ui.draw_screen( (cols, rows), canvas )			keys = ui.get_input()			for k in keys:				if k == "window resize":					cols, rows = ui.get_cols_rows()					continue				if reply is not None:					return				if k == "enter": 					reply = urwid.Text( "Nice to meet you,\n"+						ask.edit_text+"." )					fill.body = reply				if fill.selectable():					fill.keypress( (cols, rows), k )	ui.run_wrapper( run )examples["frlb"] = ["example_frlb"]def example_frlb():	import urwid.curses_display	import urwid	class Conversation(object):		def __init__(self):			self.items = urwid.SimpleListWalker(				[self.new_question()])			self.listbox = urwid.ListBox(self.items)			instruct = urwid.Text("Press F8 to exit.")			header = urwid.AttrWrap( instruct, 'header' )			self.top = urwid.Frame(self.listbox, header)		def main(self):			self.ui = urwid.curses_display.Screen()			self.ui.register_palette([				('header', 'black', 'dark cyan', 'standout'),				('I say', 'default', 'default', 'bold'),				])			self.ui.run_wrapper( self.run )		# CUT HERE						def run(self):			size = self.ui.get_cols_rows()			while True:				self.draw_screen( size )				keys = self.ui.get_input()				if "f8" in keys: 					break				for k in keys:					if k == "window resize":						size = self.ui.get_cols_rows()						continue					self.top.keypress( size, k )				if keys:					name = self.items[0].edit_text					self.items[1:2] = [self.new_answer(name)]		# CUT HERE		def draw_screen(self, size):			canvas = self.top.render( size, focus=True )			self.ui.draw_screen( size, canvas )				def new_question(self):			return urwid.Edit(('I say',"What is your name?\n"))				def new_answer(self, name):			return urwid.Text(('I say',"Nice to meet you, "+name+"\n"))				Conversation().main()examples["lbcont"]=["example_lbcont"]def example_lbcont():	import urwid.curses_display	import urwid	class Conversation(object):		def __init__(self):			self.items = urwid.SimpleListWalker(				[self.new_question()])			self.listbox = urwid.ListBox(self.items)			instruct = urwid.Text("Press F8 to exit.")			header = urwid.AttrWrap( instruct, 'header' )			self.top = urwid.Frame(self.listbox, header)		def main(self):			self.ui = urwid.curses_display.Screen()			self.ui.register_palette([				('header', 'black', 'dark cyan', 'standout'),				('I say', 'default', 'default', 'bold'),				])			self.ui.run_wrapper( self.run )		# CUT HERE						def run(self):			size = self.ui.get_cols_rows()			while True:				self.draw_screen( size )				keys = self.ui.get_input()				if "f8" in keys: 					break				for k in keys:					if k == "window resize":						size = self.ui.get_cols_rows()						continue					self.keypress( size, k )								def keypress(self, size, k):			if k == "enter":				widget, pos = self.listbox.get_focus()				if not hasattr(widget,'get_edit_text'):					return								answer = self.new_answer( widget.get_edit_text() )								if pos == len(self.items)-1:					self.items.append( answer )					self.items.append( self.new_question() )				else:					self.items[pos+1:pos+2] = [answer]				widget.set_edit_pos(0)				self.listbox.set_focus( pos+2, coming_from='above' )			else:				self.top.keypress( size, k )		# CUT HERE		def draw_screen(self, size):			canvas = self.top.render( size, focus=True )			self.ui.draw_screen( size, canvas )				def new_question(self):			return urwid.Edit(('I say',"What is your name?\n"))				def new_answer(self, name):			return urwid.Text(('I say',"Nice to meet you, "+name+"\n"))				Conversation().main()examples["lbscr"] = ["example_lbscr"]def example_lbscr():	import urwid.curses_display	import urwid	# CUT HERE	CONTENT = [ urwid.AttrWrap( w, None, 'reveal focus' ) for w in [		urwid.Text("This is a text string that is fairly long"),		urwid.Divider("-"),		urwid.Text("Short one"),		urwid.Text("Another"),		urwid.Divider("-"),		urwid.Text("What could be after this?"),		urwid.Text("The end."),	] ]	# CUT HERE	class RevealFocus(object):		def __init__(self):			self.listbox = urwid.ListBox( CONTENT )			self.head = urwid.Text("Pressed:")			self.head = urwid.AttrWrap(self.head, 'header')			self.top = urwid.Frame(self.listbox, self.head)		def main(self):			self.ui = urwid.curses_display.Screen()			self.ui.register_palette([				('header', 'white', 'black'),				('reveal focus', 'black', 'dark cyan', 'standout'),				])			self.ui.run_wrapper( self.run )				def run(self):			size = self.ui.get_cols_rows()			while True:				self.draw_screen( size )				keys = self.ui.get_input()				if "f8" in keys: 					break				self.head.set_text("Pressed:")				for k in keys:					if k == "window resize":						size = self.ui.get_cols_rows()						continue					self.head.set_text("Pressed: "+k)					self.top.keypress( size, k )		def draw_screen(self, size):			canvas = self.top.render( size, focus=True )			self.ui.draw_screen( size, canvas )			RevealFocus().main()examples["wmod"] = ["example_wmod"]def example_wmod():	class QuestionnaireItem( urwid.WidgetWrap ):		def __init__(self):			self.options = []			unsure = urwid.RadioButton( self.options, "Unsure" )			yes = urwid.RadioButton( self.options, "Yes" )			no = urwid.RadioButton( self.options, "No" )			display_widget = urwid.GridFlow( [unsure, yes, no],				15, 3, 1, 'left' )			urwid.WidgetWrap.__init__(self, display_widget)				def get_state(self):			for o in self.options:				if o.get_state() is True:					return o.get_label()		examples["wanat"] = ["example_wanat","example_wanat_new","example_wanat_multi"]def example_wanat():	class Pudding( urwid.FlowWidget ):		def selectable( self ):			return False		def rows( self, (maxcol,), focus=False ):			return 1		def render( self, (maxcol,), focus=False ):			num_pudding = maxcol / len("Pudding")			return urwid.TextCanvas(["Pudding"*num_pudding]) 	class BoxPudding( urwid.BoxWidget ):		def selectable( self ):			return False		def render( self, (maxcol, maxrow), focus=False ):			num_pudding = maxcol / len("Pudding")			return urwid.TextCanvas(				["Pudding"*num_pudding] * maxrow)def example_wanat_new():	class NewPudding( urwid.FlowWidget ):		def selectable( self ):			return False		def rows( self, (maxcol,), focus=False ):			w = self.display_widget( (maxcol,), focus )			return w.rows( (maxcol,), focus )		def render( self, (maxcol,), focus=False ):			w = self.display_widget( (maxcol,), focus )			return w.render( (maxcol,), focus )		def display_widget( self, (maxcol,), focus ):			num_pudding = maxcol / len("Pudding")			return urwid.Text( "Pudding"*num_pudding )def example_wanat_multi():	class MultiPudding( urwid.Widget ):		def selectable( self ):			return False		def rows( self, (maxcol,), focus=False ):			return 1		def render( self, size, focus=False ):			if len(size) == 1:				(maxcol,) = size				maxrow = 1			else:				(maxcol, maxrow) = size			num_pudding = maxcol / len("Pudding")			return urwid.TextCanvas(				["Pudding"*num_pudding] * maxrow )examples["wsel"] = ["example_wsel"]def example_wsel():	class SelectablePudding( urwid.FlowWidget ):

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -