On this page
39.4. fl —图形用户界面的 FORMS 库
自 2.6 版起弃用:fl模块已在 Python 3 中删除。
该模块提供了 Mark Overmars 的 FORMS 库接口。可以pass匿名 FTP 从主机ftp.cs.ruu.nl的目录SGI/FORMS检索该库的源。上次使用 2.0b 版进行了测试。
大多数函数都是 C 等效项的 Literals 翻译,从其名称中删除首字母fl_。库使用的常量在下面描述的模块FL中定义。
Python 中的对象创建与 C 中的对象创建有所不同:不是将添加新 FORMS 对象的库所维护的“当前表单”添加到表单中,而是将 FORMS 对象添加到表单中的所有函数都是 Python 对象表示的方法表格。因此,C 函数fl_addto_form()和fl_end_form()没有 Python 等效项,而fl_bgn_form()的等效项称为fl.make_form()。
请注意一些令人困惑的术语:FORMS 使用* object *来表示可以放置在表单中的按钮,滑块等。在 Python 中,“对象”表示任何值。 FORMS 的 Python 接口引入了两种新的 Python 对象类型:表单对象(代表整个表单)和 FORMS 对象(代表一个按钮,滑块等)。希望这不会太令人困惑。
在 FORMS 的 Python 界面中没有“免费对象”,也没有简单的方法来添加用 Python 编写的对象类。但是,提供了用于 GL 事件处理的 FORMS 接口,因此您可以将 FORMS 与纯 GL 窗口混合使用。
请注意: 导入fl意味着将调用 GL 函数foreground()和 FORMS 例程fl_init()。
39.4.1. 模块 fl 中定义的Function
模块fl定义以下Function。有关它们的作用的更多信息,请参见 FORMS 文档中等效 C 函数的描述:
fl.make_form(* type , width , height *)- 创建具有给定类型,宽度和高度的表单。这将返回一个* form *对象,其方法如下所述。
fl.do_forms( )- 标准 FORMS 主循环。返回表示需要交互的 FORMS 对象的 Python 对象,或特殊值
FL.EVENT。
- 标准 FORMS 主循环。返回表示需要交互的 FORMS 对象的 Python 对象,或特殊值
fl.check_forms( )- 检查 FORMS 事件。返回上面的do_forms()返回的结果;如果没有立即需要交互的事件,则返回
None。
- 检查 FORMS 事件。返回上面的do_forms()返回的结果;如果没有立即需要交互的事件,则返回
fl.set_event_call_back(Function)- 设置事件回调函数。
fl.set_graphics_mode(* rgbmode , doublebuffering *)- 设置图形模式。
fl.get_rgbmode( )- 返回当前的 rgb 模式。这是 C 全局变量
fl_rgbmode的值。
- 返回当前的 rgb 模式。这是 C 全局变量
fl.show_message(* str1 , str2 , str3 *)- 显示一个带有三行消息和一个确定按钮的对话框。
fl.show_question(* str1 , str2 , str3 *)- 显示一个带有三行消息以及“是”和“否”按钮的对话框。如果用户按 YES,则返回
1,否则,则返回0。
- 显示一个带有三行消息以及“是”和“否”按钮的对话框。如果用户按 YES,则返回
fl.show_choice(* str1 , str2 , str3 , but1 * [,* but2 * [,* but3 *]])- 显示一个带有三行消息和最多三个按钮的对话框。它返回用户单击的按钮编号(
1,2或3)。
- 显示一个带有三行消息和最多三个按钮的对话框。它返回用户单击的按钮编号(
fl.show_input(提示,默认)- 显示一个带有单行提示消息和文本字段的对话框,用户可以在其中 Importing 字符串。第二个参数是默认 Importing 字符串。它返回用户编辑的字符串值。
fl.show_file_selector(消息,目录,模式,默认)- 显示一个对话框,用户可以在其中选择文件。它返回用户选择的绝对文件名,如果用户按下“取消”,则返回
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(按钮,* valuator1 , valuator2 *)- 这些Function是到相应 GL Function的 FORMS 接口。如果您想在使用
fl.do_events()时自己处理某些 GL 事件,请使用它们。当检测到 FORMS 无法处理的 GL 事件时,fl.do_forms()返回特殊值FL.EVENT,您应该调用fl.qread()从队列中读取事件。不要使用等效的 GL Function!
- 这些Function是到相应 GL Function的 FORMS 接口。如果您想在使用
fl.color( )fl.mapcolor( )fl.getmcolor( )- 请参阅 FORMS 文档中的
fl_color(),fl_mapcolor()和fl_getmcolor()的描述。
- 请参阅 FORMS 文档中的
39.4.2. 表单对象
表单对象(由上面的make_form()返回)具有以下方法。每个方法都对应一个名称以fl_开头的 C 函数;并且其第一个参数是表单指针;请参阅官方 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 ,- 将一个按钮对象添加到窗体。 —方法:
get_button(),set_button()。
- 将一个按钮对象添加到窗体。 —方法:
form.add_lightbutton(* type , x , y , w , h ,- 将一个 lightbutton 对象添加到窗体。 —方法:
get_button(),set_button()。
- 将一个 lightbutton 对象添加到窗体。 —方法:
form.add_roundbutton(* type , x , y , w , h ,- 将一个圆按钮对象添加到窗体。 —方法:
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()。
- 将一个 valslider 对象添加到窗体。 —方法:
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 *)- 将 Importing 对象添加到窗体。 —方法:
set_input(),get_input(),set_input_color(),set_input_return()。
- 将 Importing 对象添加到窗体。 —方法:
form.add_menu(* type , x , y , w , h ,- 将菜单对象添加到窗体。 —方法:
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 文档:
| Name | C Type | Meaning |
|---|---|---|
window |
int (read-only) | GL 窗口 ID |
w |
float | form width |
h |
float | form height |
x |
float | 表格 x 来源 |
y |
float | 形式 |
deactivated |
int | 如果表单已停用,则为非零 |
visible |
int | 如果形式可见,则为非零 |
frozen |
int | 如果表单被冻结,则为非零 |
doublebuf |
int | 如果双缓冲打开,则为非零 |
39.4.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 文档:
| Name | C Type | Meaning |
|---|---|---|
objclass |
int (read-only) | object class |
| type | int (read-only) | object type |
boxtype |
int | box type |
x |
float | x origin |
y |
float | y origin |
w |
float | width |
h |
float | height |
col1 |
int | primary color |
col2 |
int | secondary color |
align |
int | alignment |
lcol |
int | label color |
lsize |
float | 标签字体大小 |
label |
string | label string |
lstyle |
int | label style |
pushed |
int (read-only) | (请参阅 FORMS 文档) |
focus |
int (read-only) | (请参阅 FORMS 文档) |
belowmouse |
int (read-only) | (请参阅 FORMS 文档) |
frozen |
int (read-only) | (请参阅 FORMS 文档) |
active |
int (read-only) | (请参阅 FORMS 文档) |
| input | int (read-only) | (请参阅 FORMS 文档) |
visible |
int (read-only) | (请参阅 FORMS 文档) |
radio |
int (read-only) | (请参阅 FORMS 文档) |
automatic |
int (read-only) | (请参阅 FORMS 文档) |
39.5. FL —与 fl 模块一起使用的常量
自 2.6 版起弃用:FL模块已在 Python 3 中删除。
该模块定义了使用内置模块fl所需的符号常量(请参见上文);它们与 C 头文件<forms.h>中定义的等效,只是Ellipsis了名称前缀FL_。阅读模块源以获取定义名称的完整列表。建议使用:
import fl
from FL import *
39.6. flp —加载存储的 FORMS 设计的函数
自 2.6 版起弃用:flp模块已在 Python 3 中删除。
该模块定义的Function可以读取由 FORMS 库随附的“表单设计器”( fdesign )程序创建的表单定义(请参见上面的模块fl)。
现在,请参阅 Python 库源目录中的文件flp.doc以获取描述。
XXX 请在此处插入完整的说明!