formsplit.py

来自「minimal python variant for small footpri」· Python 代码 · 共 59 行

PY
59
字号
# A FormSplit lets you place its children exactly where you want them# (including silly places!).# It does no explicit geometry management except moving its children# when it is moved.# The interface to place children is as follows.# Before you add a child, you may specify its (left, top) position# relative to the FormSplit.  If you don't specify a position for# a child, it goes right below the previous child; the first child# goes to (0, 0) by default.# NB: This places data attributes named form_* on its children.# XXX Yes, I know, there should be options to do all sorts of relative# placement, but for now this will do.from Split import Splitclass FormSplit(Split):	#	def create(self, parent):		self.next_left = self.next_top = 0		self.last_child = None		return Split.create(self, parent)	#	def getminsize(self, m, sugg_size):		max_width, max_height = 0, 0		for c in self.children:			c.form_width, c.form_height = c.getminsize(m, (0, 0))			max_width = max(max_width, c.form_width + c.form_left)			max_height = max(max_height, \					 c.form_height + c.form_top)		return max_width, max_height	#	def getbounds(self):		return self.bounds	#	def setbounds(self, bounds):		self.bounds = bounds		fleft, ftop = bounds[0]		for c in self.children:			left, top = c.form_left + fleft, c.form_top + ftop			right, bottom = left + c.form_width, top + c.form_height			c.setbounds(((left, top), (right, bottom)))	#	def placenext(self, left, top):		self.next_left = left		self.next_top = top		self.last_child = None	#	def addchild(self, child):		if self.last_child:			width, height = \			    self.last_child.getminsize(self.beginmeasuring(), \			    			       (0, 0))			self.next_top = self.next_top + height		child.form_left = self.next_left		child.form_top = self.next_top		Split.addchild(self, child)		self.last_child = child	#

⌨️ 快捷键说明

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