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
  • 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 *)

    • 显示一个带有三行消息和一个确定按钮的对话框。
  • fl. show_question(* str1 str2 str3 *)

    • 显示一个带有三行消息以及“是”和“否”按钮的对话框。如果用户按 YES,则返回1,否则,则返回0
  • fl. show_choice(* str1 str2 str3 but1 * [,* but2 * [,* but3 *]])

    • 显示一个带有三行消息和最多三个按钮的对话框。它返回用户单击的按钮编号(123)。
  • 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!
  • fl. color ( )

  • fl. mapcolor ( )

  • fl. getmcolor ( )

    • 请参阅 FORMS 文档中的fl_color()fl_mapcolor()fl_getmcolor()的描述。

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 name *)

    • 将一个按钮对象添加到窗体。 —方法:get_button()set_button()
  • form. add_lightbutton(* type x y w h name *)

    • 将一个 lightbutton 对象添加到窗体。 —方法: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 *)

    • 将 Importing 对象添加到窗体。 —方法: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 文档:

NameC TypeMeaning
windowint (read-only)GL 窗口 ID
wfloatform width
hfloatform height
xfloat表格 x 来源
yfloat形式
deactivatedint如果表单已停用,则为非零
visibleint如果形式可见,则为非零
frozenint如果表单被冻结,则为非零
doublebufint如果双缓冲打开,则为非零

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 文档:

NameC TypeMeaning
objclassint (read-only)object class
typeint (read-only)object type
boxtypeintbox type
xfloatx origin
yfloaty origin
wfloatwidth
hfloatheight
col1intprimary color
col2intsecondary color
alignintalignment
lcolintlabel color
lsizefloat标签字体大小
labelstringlabel string
lstyleintlabel style
pushedint (read-only)(请参阅 FORMS 文档)
focusint (read-only)(请参阅 FORMS 文档)
belowmouseint (read-only)(请参阅 FORMS 文档)
frozenint (read-only)(请参阅 FORMS 文档)
activeint (read-only)(请参阅 FORMS 文档)
inputint (read-only)(请参阅 FORMS 文档)
visibleint (read-only)(请参阅 FORMS 文档)
radioint (read-only)(请参阅 FORMS 文档)
automaticint (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 请在此处插入完整的说明!