python / 2.7.15 / all / library-fl.html

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

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