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 请在此处插入完整的说明!