Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R gWidgets调整/最大化模式窗口_R_User Interface_Gtk_Gwidgets - Fatal编程技术网

R gWidgets调整/最大化模式窗口

R gWidgets调整/最大化模式窗口,r,user-interface,gtk,gwidgets,R,User Interface,Gtk,Gwidgets,我的脚本需要等待用户输入才能继续处理。在使用R gWidgets包实现GUI之后,我发现gbasicdialog小部件比gwindow工作得更好,因为它是模态的 gwindow小部件具有有用的最小化和最大化按钮。gbasicdialog小部件没有这些按钮,我经常在GUI中显示大的gtables,这意味着用户必须反复单击并拖动以扩展窗口,才能看到足够多的表 到目前为止,我调整了gtable小部件的大小,如下所示: library(gWidget) library(gWidgetsRGtk2) li

我的脚本需要等待用户输入才能继续处理。在使用R gWidgets包实现GUI之后,我发现gbasicdialog小部件比gwindow工作得更好,因为它是模态的

gwindow小部件具有有用的最小化和最大化按钮。gbasicdialog小部件没有这些按钮,我经常在GUI中显示大的gtables,这意味着用户必须反复单击并拖动以扩展窗口,才能看到足够多的表

到目前为止,我调整了gtable小部件的大小,如下所示:

library(gWidget)
library(gWidgetsRGtk2)
library(RGtk2)
options(guiToolkit = "RGtk2")

mywindow <- gbasicdialog("Display table", do.buttons = FALSE)
# there can be multiple ggroups to one table, which all occupy the gbasicdialog
mygroup <- ggroup(container = mywindow, horizontal = FALSE) 
mytable <- gtable(a_data_frame, container = mygroup, expand = TRUE, fill = TRUE)
size(mytable) <- c(500, 500) # or any other large enough dimension
exitbutton <- gbutton("Done", container = mywindow, 
                      handler = function(h, ...) {
                      #some steps
                      dispose(mywindow)
                      })
visible(mywindow, TRUE)
库(gWidget)
库(gWidgetsRGtk2)
图书馆(RGtk2)
选项(guiToolkit=“RGtk2”)

mywindow在查看Gtk工具包之后,有一些方法与和相关。最大化方法(自动最大化小部件)适用于这两种方法,但setdecordent方法(显示包含最小化、最大化、关闭按钮的上栏)仅适用于GtkWindow

我们可以使用gwindow小部件获得调整大小按钮,同时添加重复循环以暂停剩余脚本的执行,从而保持模式/交互行为。自动最大化小部件的步骤,可以在jverzani的评论中找到,也可以添加到这个gwindow中

currentenv <- environment() # get current environment
mybool <- FALSE # remains FALSE until the gwindow is closed
mywindow <- gwindow("Display table") 

# Implement auto-maximized gwindow if needed
getToolkitWidget(mywindow)$maximize()

# there can be multiple ggroups to one table, which all occupy the gwindow
mygroup <- ggroup(container = mywindow, horizontal = FALSE) 
mytable <- gtable(a_data_frame, container = mygroup, expand = TRUE, fill = TRUE)
# Upon exit, assign TRUE to variable denoting gwindow is closed
exitbutton <- gbutton("Done", container = mygroup, 
                      handler = {
                          # (some steps)
                          # possibly returning svalue(mytable)

                          # remove ggroup to prevent error
                          delete(mywindow, mygroup) 

                          # close window and confirm closure
                          dispose(mywindow) 
                          assign("mybool", TRUE, envir = currentenv) 
                      })

# Executes repeat loop until mywindow is closed
repeat{
    if(mybool){
        break
    }
}

currentenv不调用
size(mywindow)这是令人满意的,但表/数据框大小可能会更改,这意味着我必须为每个对话框调用size,如果我添加列或行,它将再次被切断。我想让模式窗口自动最大化,或者给用户一次点击的选择。什么工具包?这可能是可行的,但需要gwidgetapi之外的东西。(在msot案例中,这并不是什么大问题)。我使用的是RGtk2。我已经试着查看相关小部件的源代码,但这超出了我目前的能力;getToolkitWidget(mywindow)$setdecordent(TRUE)
getToolkitWidget(mywindow)$maximize()