使用R中的tcltk在文本框中的文件名

时间:2017-07-10 12:48:59

标签: r tk

使用tcltk在R中创建GUI,我想创建一个不可编辑的文本框,显示用户选择的保存文件的名称。我能够创建按钮和框,但我无法弄清楚如何显示所选文件的名称。我想我需要使用tkinsert()

这是我到目前为止所做的:

library(tcltk)
library(tcltk2)
library(readxl)

test1 <- tktoplevel()
tkwm.title(test1, "Test 1")

tkgrid.rowconfigure(test1, 4)
tkgrid.columnconfigure(test1, 3)

getXlsx <- function() {
xlsheet <- tclvalue(tkgetOpenFile(
filetypes = "{ {Excel Files} {.xlsx} } { {All Files} * }"))
a <- read_excel(xlsheet)
assign("a", a, envir = .GlobalEnv)
}

test1$env$butSelect1 <- tk2button(test1, text = " Select File ", command 
= getXlsx)
tkgrid(test1$env$butSelect1, padx = c(10,0), pady = 10, column = 0, row = 
0)

test1$env$txt1 <- tk2text(test1, width = 40, height = 1)
tkgrid(test1$env$txt1, padx = c(10,10), pady = 10, column = 1, row = 0, 
columnspan = 2)
tkconfigure(test1$env$txt1, state = "disabled")
###  tkinsert(test1$env$txt1, ???)  ###

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我现在得到它,我不得不在函数本身添加4行:

getXlsx <- function() {
  xlsheet <- tclvalue(tkgetOpenFile(
    filetypes = "{ {Excel Files} {.xlsx} } { {All Files} * }"))
  a <- read_excel(xlsheet)
  assign("a", a, envir = .GlobalEnv)
  assign("z", xlsheet, envir = .GlobalEnv)
  tkconfigure(test1$env$txt1, state = "normal")
  tkinsert(test1$env$txt1, "end", z)
  tkconfigure(test1$env$txt1, state = "disabled")
}

这会在全局环境中使用路径名创建一个新的“z”值,然后允许文本框可编辑,然后添加路径名,然后再次使文本框不可编辑。