39.4. fl — 图形用户界面的 FORMS 库 — Python 文档
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]])
- 显示一个包含三行消息和最多三个按钮的对话框。 它返回用户单击的按钮的编号(
1
、2
或3
)。
- 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 应在此处插入完整的描述!