Как создать форму gWidgets - PullRequest
0 голосов
/ 15 сентября 2018

Заранее благодарим за любую помощь, которую вы можете предложить. Я пытаюсь создать графический интерфейс, который позволяет пользователю выбирать, в каком каталоге расположены файлы, а затем вводить некоторую другую информацию. Затем я хочу вычислить информацию, например, сколько файлов находится в папке, и некоторую другую информацию, полученную из файлов. Мне нужны значения, которые пользователь вводит для выполнения любого анализа. Однако, когда я использую svalue (), я получаю сообщение об ошибке. Также хочу обобщить информацию на второй вкладке блокнота. Вот мой код:

library(gWidgets)
library(gWidgets2)
library(gWidgets2RGtk2)
library(gWidgetsRGtk2)
library(gWidgetstcltk)
library(gWidgets2tcltk)
library(pdftools)

require(gWidgets2RGtk2)
fileChoose <- function(action="print", text = "Select a file...",
                   type="open", ...) {
  gfile(text=text, type=type, ..., action = action, handler =
      function(h,...) {
        do.call(h$action, list(h$file))
      })
}
path <- fileChoose(action="setwd", type="selectdir", text="Select a 
directory...")
files <- list.files(path, full.names = TRUE)
files_ex <- file_ext(files)
win <- gwindow("DataMate Project")
grp <- ggroup(horizontal = FALSE, container=win)
nb <- gnotebook(container = grp, expand=TRUE)
group1 <- ggroup(horizontal = FALSE, container=nb, label = "Input")
x <- c("SELECT CUSTOMER", "Eaton", "NG", "Spectris", "Other")
n <- length(files_ex)
lyt <- glayout(cont = frame)
glabel("File Path to Docs", container = group1)
p <- gedit(path, container=group1)
glabel("To your knowledge is this an ITAR quote?", container = group1)
itar <- gradio(c("Non-ITAR","ITAR"), container=group1)
glabel("Who is the customer? (Parent company)", container = group1)
cust <- gcombobox(x, container=group1)
glabel("How many RFQs / Assemblies?", container = group1)
val <- gspinbutton(from=1, to = 100, by =1, value=1,container=group1)
run <- gbutton("Run", container = group1, gmessage(svalue(val))

1 Ответ

0 голосов
/ 18 сентября 2018

Возможно, это поможет вам начать:

show_gui <- function(parent, path) {

    files <- list.files(path, full.names = TRUE)
    files_ex <- tools::file_ext(files)

    nb <- gnotebook(container = parent, expand=TRUE)

    group1 <- gframe(horizontal = FALSE, container=nb, label = "Input", expand=TRUE)
    x <- c("SELECT CUSTOMER", "Eaton", "NG", "Spectris", "Other")
    n <- length(files_ex)
    glabel("File Path to Docs", container = group1)
    p <- gedit(path, container=group1)
    glabel("To your knowledge is this an ITAR quote?", container = group1)
    itar <- gradio(c("Non-ITAR","ITAR"), container=group1)
    glabel("Who is the customer? (Parent company)", container = group1)
    cust <- gcombobox(x, container=group1)
    glabel("How many RFQs / Assemblies?", container = group1)
    val <- gspinbutton(from=1, to = 100, by =1, value=1,container=group1)
    run <- gbutton("Run", container = group1, handler = function(h, ...) {
        gmessage(svalue(val))
    })




}





w <- gwindow("GUI")
parentgroup <- ggroup(cont=w)
g = ggroup(cont=parentgroup, horizontal=FALSE)
glabel("Choose a file to proceed", cont=g)

gfilebrowse(cont=g,  type="selectdir", handler=function(h, ...) {
    dname = svalue(h$obj)
    if (dir.exists(dname)) {
        delete(parentgroup, g)
        show_gui(parentgroup, dname)
    } else {
        gmessage("That file does not exists")
    }
})

У вас было несколько ошибок.Я не сделал для вас всего остального, но в обработчике кнопок вы бы создали виджеты на новой вкладке и использовали svalue (nb) <- 2 для перехода на эту вкладку. </p>

...