39.4. fl — 图形用户界面的 FORMS 库 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/fl
跳转至:导航、​搜索

39.4. 佛罗里达州 — 图形用户界面的 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 使用 object 一词来表示按钮、滑块等。 可以放在表格中。 在 Python 中,'object' 表示任何值。 FORMS 的 Python 接口引入了两种新的 Python 对象类型:表单对象(表示整个表单)和 FORMS 对象(表示一个按钮、滑块等)。 希望这不会太令人困惑。

在 Python 的 FORMS 接口中没有“自由对象”,也没有简单的方法来添加用 Python 编写的对象类。 不过,GL 事件处理的 FORMS 接口是可用的,因此您可以将 FORMS 与纯 GL 窗口混合使用。

请注意: 导入 fl 意味着调用 GL 函数 foreground() 和 FORMS 例程 fl_init()

39.4.1. 模块中定义的函数佛罗里达州

模块 fl 定义了以下函数。 有关它们的作用的更多信息,请参阅 FORMS 文档中对等效 C 函数的描述:

fl.make_form(type, width, height)
创建具有给定类型、宽度和高度的表单。 这将返回一个 form 对象,其方法如下所述。
fl.do_forms()
标准的 FORMS 主循环。 返回表示需要交互的 FORMS 对象的 Python 对象,或特殊值 FL.EVENT
fl.check_forms()
检查 FORM 事件。 返回 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 按钮的对话框。 如果用户按 YES,则返回 1,如果否,则返回 0
fl.show_choice(str1, str2, str3, but1[, but2[, but3]])
显示一个包含三行消息和最多三个按钮的对话框。 它返回用户单击的按钮的编号(123)。
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)

这些函数是对应 GL 函数的 FORMS 接口。 如果您想在使用 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 文档中的描述。


39.4.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)
向窗体添加一个 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)
向表单添加输入对象。 — 方法: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()、 , get_browser(), set_browser_fontsize(), set_browser_fontstyle(), set_browser_specialkey()
form.add_timer(type, x, y, w, h, name)
向窗体添加一个计时器对象。 — 方法:set_timer()get_timer()

表单对象具有以下数据属性; 请参阅表格文档:

名称 C型 意义
window int(只读) GL 窗口 ID
w 漂浮 表格宽度
h 漂浮 表格高度
x 漂浮 形式 x 原点
y 漂浮 y 原点
deactivated 整数 如果表单被停用,则非零
visible 整数 如果表单可见,则非零
frozen 整数 如果表单被冻结,则非零
doublebuf 整数 如果双缓冲打开,则非零


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 对象具有这些数据属性; 请参阅表格文档:

名称 C型 意义
objclass int(只读) 对象类
type int(只读) 对象类型
boxtype 整数 箱型
x 漂浮 x 原点
y 漂浮 y 原点
w 漂浮 宽度
h 漂浮 高度
col1 整数 原色
col2 整数 次要颜色
align 整数 结盟
lcol 整数 标签颜色
lsize 漂浮 标签字体大小
label 细绳 标签串
lstyle 整数 标签样式
pushed int(只读) (见表格文档)
focus int(只读) (见表格文档)
belowmouse int(只读) (见表格文档)
frozen int(只读) (见表格文档)
active int(只读) (见表格文档)
input int(只读) (见表格文档)
visible int(只读) (见表格文档)
radio int(只读) (见表格文档)
automatic int(只读) (见表格文档)


39.5. FL — 用于的常量佛罗里达州模块

自 2.6 版起已弃用:FL 模块已在 Python 3 中删除。


该模块定义了使用内置模块 fl(见上文)所需的符号常量; 它们与 C 头文件 <forms.h> 中定义的相同,只是省略了名称前缀 FL_。 阅读模块源以获取已定义名称的完整列表。 建议使用:

import fl
from FL import *

39.6. 翻转 — 加载存储的表单设计的功能

自 2.6 版起已弃用:flp 模块已在 Python 3 中删除。


该模块定义了可以读取由 FORMS 库附带的“表单设计器”(fdesign)程序创建的表单定义的函数(参见上面的模块 fl)。

目前,请参见 Python 库源目录中的文件 flp.doc 以获取说明。

XXX 应在此处插入完整的描述!