fl
fl - 用于图形用户界面的FORMS库
自2.6版弃用:fl模块已在Python 3中删除。
该模块通过Mark Overmars为FORMS库提供了一个接口。 该库的源可以通过匿名FTP从主机ftp.cs.ruu.nl,目录SGI / FORMS中检索。 最后在版本2.0b中进行了测试。
大多数函数都是C等效的直接翻译,从名称中删除最初的fl_。 库使用的常量在下面描述的模块FL中定义。
Python中的对象的创建与C中的稍有不同:而不是由添加了新FORMS对象的库维护的“当前表单”,将FORMS对象添加到表单的所有函数都是Python对象的方法 表格。 因此,C函数fl_addto_form()和fl_end_form()没有Python等价物,而fl_bgn_form()的等价物称为fl.make_form()。
注意有些令人困惑的术语:FORMS使用单词对象
来表示按钮,滑块等,您可以将它们放置在表单中。在Python中,'object'意味着任何值。FORMS的Python接口引入了两种新的Python对象
类型:表单对象
(表示整个表单)和FORMS对象
(表示一个按钮,滑块等)。希望这不是太混乱。
在FORMS的Python接口中没有“自由对象”,也没有简单的方法来添加用Python编写的对象类。尽管可以使用FOR事件处理的FORMS接口,所以可以将FORMS与纯GL窗口混合使用。
请注意:导入fl意味着调用GL函数foreground()和FORMS例程fl_init()。
1.模块fl中定义的功能
模块fl
定义了以下功能。有关它们所做的更多信息,请参阅FORMS文档中对等效C函数的描述:
fl.make_form(type, width, height)
创建一个给定类型,宽度和高度的表单
。这将返回一个表单
对象,其方法如下所述。
fl.do_forms()
标准的FORMS主循环。 返回表示需要交互的FORMS对象的Python对象,或者特殊值FL.EVENT。
fl.check_forms()
检查FORMS事件。 返回上面返回的do_forms()返回值,如果没有立即需要交互的事件返回None。
fl.set_event_call_back(function)
设置事件回调函数。
fl.set_graphics_mode(rgbmode, doublebuffering)
设置图形模式。
fl.get_rgbmode()
返回当前的rgb模式。 这是C全局变量fl_rgbmode的值。
fl.show_message(str1, str2, str3)
显示一个带有三行消息和一个OK按钮的对话框。
fl.show_question(str1, str2, str3)
显示一个带有三行消息和YES和NO按钮的对话框。 如果用户按下“是”,则返回1,否则返回“0”。
fl.show_choice(str1, str2, str3, but1[, but2[, but3]])
显示一个带有三行消息和最多三个按钮的对话框。它返回用户(点击的按钮的数目为1
,2
或3
)。
fl.show_input(prompt, default)
显示一个对话框,其中包含单行提示消息和用户可输入字符串的文本字段。第二个参数是默认的输入字符串。它返回用户编辑的字符串值。
fl.show_file_selector(message, directory, pattern, default)
显示一个用户可以选择文件的对话框。 它返回用户选择的绝对文件名,如果用户按下取消则返回None。
fl.get_directory()fl.get_pattern()fl.get_filename()
这些函数返回用户在上一次show_file_selector()调用中选择的目录,模式和文件名(仅限尾部)。
fl.qdevice(dev)fl.unqdevice(dev)fl.isqueued(dev)fl.qtest()fl.qread()fl.qreset()fl.qenter(dev, val)fl.get_mouse()fl.tie(button, valuator1, valuator2)
这些功能是FORMS与相应GL功能的接口。 如果您想在使用fl.do_events()时自己处理一些GL事件,请使用这些参数。 当检测到FORMS无法处理的GL事件时,fl.do_forms()返回特殊值FL.EVENT,您应该调用fl.qread()从队列中读取事件。 不要使用等效的GL功能!
fl.color()fl.mapcolor()fl.getmcolor()
请参阅fl_color(),fl_mapcolor()和fl_getmcolor()的FORMS文档中的说明。
2.表单对象
表单对象(由上面的make_form()返回)具有以下方法。 每个方法对应一个C函数,其名称前缀为fl_; 并且其第一个参数是一个表单指针; 请参阅官方FORMS文件的说明。
所有的add_*()
方法都会返回一个代表FORMS对象的Python对象。下面描述FORMS对象的方法。大多数FORMS对象也有一些特定的方法; 这些方法在这里列出。
form.show_form(placement, bordertype, name)
显示表单。
form.hide_form()
隐藏表单。
form.redraw_form()
重新绘制表单。
form.set_form_position(x, y)
设置表单的位置。
form.freeze_form()
冻结表格。
form.unfreeze_form()
取消冻结表单。
form.activate_form()
激活表单。
form.deactivate_form()
取消激活表单。
form.bgn_group()
开始一组新的对象; 返回一个组对象。
form.end_group()
结束当前的一组对象。
form.find_first()
找到表单中的第一个对象。
form.find_last()
找到表单中的最后一个对象。
form.add_box(type, x, y, w, h, name)
将一个框对象添加到窗体。没有额外的方法。
form.add_text(type, x, y, w, h, name)
将文本对象添加到窗体。没有额外的方法。
form.add_clock(type, x, y, w, h, name)
将时钟对象添加到窗体。- 方法:get_clock()
。
form.add_button(type, x, y, w, h, name)
将一个按钮对象添加到窗体。-方法:get_button()
,set_button()
。
form.add_lightbutton(type, x, y, w, h, name)
向表单添加一个按钮对象。-方法:get_button()
,set_button()
。
form.add_roundbutton(type, x, y, w, h, name)
向表单添加一个圆形按钮对象。-方法:get_button()
,set_button()
。
form.add_slider(type, x, y, w, h, name)
将一个滑块对象添加到窗体。-方法:set_slider_value()
,get_slider_value()
,set_slider_bounds()
,get_slider_bounds()
,set_slider_return()
,set_slider_size()
,set_slider_precision()
,set_slider_step()
。
form.add_valslider(type, x, y, w, h, name)
将valslider对象添加到窗体。-方法:set_slider_value()
,get_slider_value()
,set_slider_bounds()
,get_slider_bounds()
,set_slider_return()
,set_slider_size()
,set_slider_precision()
,set_slider_step()
。
form.add_dial(type, x, y, w, h, name)
将拨号对象添加到表单。-方法:set_dial_value()
,get_dial_value()
,set_dial_bounds()
,get_dial_bounds()
。
form.add_positioner(type, x, y, w, h, name)
将定位器对象添加到表单。-方法:set_positioner_xvalue()
,set_positioner_yvalue()
,set_positioner_xbounds()
,set_positioner_ybounds()
,get_positioner_xvalue()
,get_positioner_yvalue()
,get_positioner_xbounds()
,get_positioner_ybounds()
。
form.add_counter(type, x, y, w, h, name)
将一个计数器对象添加到窗体。-方法:set_counter_value()
,get_counter_value()
,set_counter_bounds()
,set_counter_step()
,set_counter_precision()
,set_counter_return()
。
form.add_input(type, x, y, w, h, name)
将输入对象添加到窗体。-方法:set_input()
,get_input()
,set_input_color()
,set_input_return()
。
form.add_menu(type, x, y, w, h, name)
将一个菜单对象添加到窗体。-方法:set_menu()
,get_menu()
,addto_menu()
。
form.add_choice(type, x, y, w, h, name)
将选择对象添加到表单。-方法:set_choice()
,get_choice()
,clear_choice()
,addto_choice()
,replace_choice()
,delete_choice()
,get_choice_text()
,set_choice_fontsize()
,set_choice_fontstyle()
。
form.add_browser(type, x, y, w, h, name)
将一个浏览器对象添加到窗体。-方法:set_browser_topline()
,clear_browser()
,add_browser_line()
,addto_browser()
,insert_browser_line()
,delete_browser_line()
,replace_browser_line()
,get_browser_line()
,load_browser()
,get_browser_maxline()
,select_browser_line()
,deselect_browser_line()
,deselect_browser()
,isselected_browser_line()
,get_browser()
,set_browser_fontsize()
,set_browser_fontstyle()
,set_browser_specialkey()
。
form.add_timer(type, x, y, w, h, name)
将一个计时器对象添加到窗体。-方法:set_timer()
,get_timer()
。
表单对象具有以下数据属性; 请参阅FORMS文档:
名称 | C型 | 含义 |
---|---|---|
window | int(只读) | GL窗口ID |
w | float | 形式宽度 |
h | float | 形式高度 |
x | float | 形式x起源 |
y | float | 形成y起源 |
deactivated | INT | 如果表单已停用,则为非零 |
visible | INT | 如果窗体可见,则为非零值 |
frozen | INT | 如果表格被冻结,则不为零 |
doublebuf | INT | 非双缓冲 |
3.表单对象
除了特定类型的FORMS对象的特定方法外,所有FORMS对象还具有以下方法:
FORMS object.set_call_back(function, argument)
设置对象的回调函数和参数。 当对象需要交互时,将使用两个参数调用回调函数:对象和回调参数。 (没有回调函数的FORMS对象在需要交互时由fl.do_forms()或fl.check_forms()返回。)调用此方法而不带参数来移除回调函数。
FORMS object.delete_object()
删除对象。
FORMS object.show_object()
显示对象。
FORMS object.hide_object()
隐藏对象。
FORMS object.redraw_object()
重绘对象。
FORMS object.freeze_object()
冻结对象。
FORMS object.unfreeze_object()
解冻对象。
FORMS对象具有这些数据属性; 请参阅FORMS文档:
名称 | C 类型 | 含义 |
---|---|---|
objclass | int (read-only) | 对象类 |
type | int (read-only) | 对象类 |
boxtype | int | box 类 |
x | float | x 起源 |
y | float | y 起源 |
w | float | 宽度 |
h | float | 高度 |
col1 | int | 原色 |
col2 | int | 次要颜色 |
align | int | 对准 |
lcol | int | 标签色 |
lsize | float | 标签字体大小 |
label | string | 标签字符串 |
lstyle | int | 标签类型 |
pushed | int (只读) | (参阅 FORMS 文档) |
focus | int (只读) | (参阅 FORMS 文档) |
belowmouse | int (只读) | (参阅 FORMS 文档) |
frozen | int (只读) | (参阅 FORMS 文档) |
active | int (只读) | (参阅 FORMS 文档) |
input | int (只读) | (参阅 FORMS 文档) |
visible | int (只读) | (参阅 FORMS 文档) |
radio | int (只读) | (参阅 FORMS 文档) |
automatic | int (只读) | (参阅 FORMS 文档) |
FL - 与fl模块一起使用的常量
自2.6版弃用:FL模块已在Python 3中删除。
该模块定义了使用内置模块fl所需的符号常量(参见上文); 它们与C头文件<forms.h>中定义的那些相同,只是省略了名称前缀FL_。 阅读模块源以获取定义名称的完整列表。 建议使用:
import fl
from FL import *
flp - 加载存储的FORMS设计的函数
自2.6版以来已弃用:该flp
模块已在Python 3中删除。
该模块定义了可读取由FORMS库附带的“表单设计器”(fdesign
)程序创建的表单定义的函数(参见fl
上面的模块)。
现在,请参阅flp.doc
Python库源目录中的文件以获取描述。
XXX应该在这里插入一个完整的描述!