由于 Tcl-tk 中的 window 大小,隐藏了确定按钮

Hidden OK button because of window size in Tcl-tk

我有以下问题,如上图所述。 实际上,有时当我使用我的脚本时 "OK" 按钮会显示,而在其他时候当我使用脚本时则不会。如果我自己把 window 变大,然后使用我的鼠标它就会显示出来(它以前是隐藏的,因为 window 太小了)。我不明白为什么,我在互联网上找不到任何真正有用的东西。 (更改 padxpady 等值无效。) 必须有一个参数来调整一般 window 大小,但我找不到它。 我的第二个问题是,如果字符串像示例中那样长;将显示从左向右滚动的滚动条。我想展示完整的字符串。可悲的是,我也不知道如何解决这个问题。

有什么办法吗?

我的代码如下:

noms_var_manif是一个字符向量

win2 <- tktoplevel()

tkgrid(tk2label(win2, text = "Veuillez selectionner les variables appartenant à ce bloc",
                wraplength = 200, justify = "left"),
       padx = 10, pady = c(15, 5), sticky = "w", columnspan = 2)
# Note that 'selection' uses indices starting at 1, like R and not Tcl/Tk!

win2$env$lst <- tk2listbox(win2,values=noms_var_manif, height = 10, selectmode = "extended")
tkgrid(win2$env$lst, padx = 100, pady = c(10, 20), sticky = "ew", columnspan = 2)

onOK <- function() {
  select_var_bloc<- noms_var_manif[as.numeric(tkcurselection(win2$env$lst)) + 1]
  tkdestroy(win2)
  if (!length(select_var_bloc)) {
    msg <- "Il n'y a donc aucune variable dans ce bloc?"
  } else {
    msg <- paste0("Vous avez choisi les variables suivantes: ",
                  paste(select_var_bloc, collapse = ", "))
  }
  tkmessageBox(message = msg)
  win2$env$select_var_bloc= select_var_bloc
  tkdestroy(win2)
}

win2$env$butOK <-tk2button(win2, text = "OK ", width = -6, command = onOK)
tkgrid(win2$env$butOK, padx = 10, pady = c(10, 15))
tkwait.window(win2) 
select_var_bloc=win2$env$select_var_bloc

您要做的是 (1) 固定列表框的高度和宽度,以及 (2) 固定 window 的高度和宽度,使其足够大以允许 OK 按钮始终显示。您还可以修复 window,使其无法调整大小。