gpt4 book ai didi

R - 根据在下拉列表 (ttkcombobox) 中选择的值更新文本输入框 (tkentry)

转载 作者:行者123 更新时间:2023-12-05 06:22:04 26 4
gpt4 key购买 nike

我对 R 和 tcltk/GUI 编程还是很陌生。

这是一个简单的 GUI,我希望文本输入框根据用户从下拉菜单中选择的内容更改为不同的值。

我尝试寻找答案,但我只找到了提示(tkbind、tkafter),这不足以让我知道如何实际编写代码。

这是怎么做到的?

非常感谢!

更新 - 找到解决方案 - tkbind 和 tkconfigure 的组合 - 向下滚动到代码末尾附近,我已经用一个有效的解决方案更新了它。

UPDATE2 - 好的,所以虽然这似乎有效,但它破坏了我后来的代码,并且在按下“确定”按钮后实际上并没有使用这些值。在下面添加了该代码。有任何想法吗?即 VariableToUse 始终保持在 10,即使我稍后在选择组合框值时在代码中将其设置为 1。

UPDATE3 - 好的,也修复了!这是我在其他地方读到的关于“水平”的东西——我只需要使用 <<- 而不是 <-。代码更新如下。

if (!require("tcltk2")) {
install.packages("tcltk2", dependencies = TRUE)
library(tcltk2)
}

#########################################################
### Parameters
#########################################################
MyEditBox <- tclVar(10)
# Default selection in dropdown
MyComboBox <- tclVar(1)
# Ok button
ret_var <- tclVar("")

#########################################################
### Button functions
#########################################################

submit <- function() {
tclvalue(ret_var) <- "OK"
tkdestroy(tt)
}

quit <- function() {
tkdestroy(tt)
}


#########################################################
### BUILD GUI
#########################################################

## head line
tt <- tktoplevel(borderwidth = 20)
tkwm.title(tt, "ComboBox Test")

if(.Platform$OS.type == "windows"){
box_length <- 63
}else{
box_length <- 55
}
cell_width <- 3
bt_width <- 8

# Dropdown box
comboBox <- ttkcombobox(tt,values=c(1,2,3), textvariable = MyComboBox)

# Box1
box1 <- tkentry(tt, textvariable = MyEditBox, width = 6)


## submit / reset / quit
submit_button <- tkbutton(tt, text = "Go ...", command = submit)
quit_button <- tkbutton(tt, text = "Quit", command = quit)


#########################################################
### Display GUI
#########################################################

tkgrid(tklabel(tt, text = ""),tklabel(tt, text = "Select a value:"))


tkgrid(tklabel(tt, text = "\n"), padx = cell_width) # leave blank line

tkgrid(tklabel(tt, text = "Select Something:"), comboBox, padx = cell_width)

tkgrid(tklabel(tt, text = "\n"), padx = cell_width) # leave blank line

tkgrid(tklabel(tt, text = "Box To Update:"), box1, padx = cell_width)
tkgrid(tklabel(tt, text = "\n"), padx = cell_width) # leave blank line

### Go and Quit buttons
tkgrid(tklabel(tt, text = ""), submit_button, quit_button, padx = cell_width)

tkgrid.configure(quit_button, sticky = "w")

tkbind(comboBox, "<<ComboboxSelected>>", function() {
if (tclvalue(MyComboBox)==1){
# Change the value
MyEditBox <<- tclVar(1)
# Update the GUI
tkconfigure(box1,textvariable = MyEditBox)
}
})

tkwait.window(tt)


########################
### Go button pressed
########################

if (tclvalue(ret_var) == "OK") {
VariableToUseLater <- tclvalue(MyEditBox)
}

最佳答案

好的,我找到了我需要的命令:

# Set the value
MyEditBox <<- tclVar(1)
# Show in GUI
tkconfigure(box1, textvariable=MyEditBox)

关于R - 根据在下拉列表 (ttkcombobox) 中选择的值更新文本输入框 (tkentry),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59423727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com