tcltk中的winDialogString相当于什么?
我一直在R中使用readline
,以便向用户提问并获得回复:
response <- readline("What's the air speed velocity of an unladen swallow? ")
今天我在我的Windows笔记本电脑上发现了winDialogString
功能,弹出一个小模态消息框来获取输入:
response <- winDialogString("What's the air speed velocity of an unladen swallow? ",
default="african or european?")
我希望使用此功能,但为了便于携带,我想使用tcltk
版本的winDialog
,所以至少我的Linux机箱也可以使用它。
现在,如果我使用的是winDialog
,则等效值为tkmessageBox
:
# fairly equivalent, tkmessageBox is more portable.
winDialog(type='yesno','Do you like green eggs and ham?')
tkmessageBox(type='yesno',message='Do you like green eggs and ham?')
tcltk中的winDialogString相当于什么?
我以为是tkdialog
,所以我试了一下:
tkdialog("What's the air speed velocity of an unladen swallow?")
它给了我这个错误:
Error in structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"), class = "tclObj") :
[tcl] wrong # args: should be "tk_dialog w title text bitmap default ...".
文档非常无益?tkdialog
指向没有特定文档的通用tk帮助页面。我如何使用tkdialog
(甚至是我想要的?)
我推断我可能不得不提供它所抱怨的所有论据,所以我尝试了一些事情:
> tkdialog(title='',
text="What's the air speed velocity of an unladen swallow?",
bitmap='',default="african or european?")
Error in structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"), class = "tclObj") :
[tcl] bad window path name "-title".
> tkdialog(tktoplevel(),title='',
text="What's the air speed velocity of an unladen swallow?",
bitmap='',default="african or european?")
Error in structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"), class = "tclObj") :
[tcl] bitmap "-text" not defined.
我怎样才能让它发挥作用?我宁愿呆在tcltk
而不是gWidgets
之类的东西,因为tcltk
在大多数R发行版中(如果R发行版是tcltk
- 不相容,我'我会回到readline
)。
欢呼声。
答案 0 :(得分:3)
你所追求的最接近的是tkdialog
,但它并不是真正设计用于R;你将不得不做一些工作(我完全承认不知道R,我在Tk方面)。我能做的就是解释那些参数需要做什么。
有基础tk_dialog
命令online的文档。特别是,您需要:
error
,gray75
,gray50
,gray25
,gray12
,{{ 1}},hourglass
,info
,questhead
,question
(或者在OSX上,您还可以获得以下奖励系统图片:
warning
,
document
,
stationery
,
edition
,
application
,
accessory
,
folder
,
pfolder
,
trash
,
floppy
,
ramdisk
,
cdrom
,
preferences
,
querydoc
,
stop
,
note
)。 API实际上并没有完全用于从R中使用。它在Tcl中也不是特别好用,而且位图列表真的模糊不清(而且这就是其中一个Tk的维护者)。如果您感兴趣,列表是 documented,但我并不感到惊讶您不知道那是您想要的。除了你正在使用caution
(它本身已经过时)之外,我不会告诉你它。
您也可以自己实施。执行简单对话的代码并不复杂(tk_dialog
纯粹是在传统功能之上编写脚本)。我不是一个足够好的R程序员,但能够帮助你做到这一点。