我有一個閃亮的應用程式,帶有一個數字輸入,可以控制彈出的 ColourPickers 和 rclipButtons 的數量。按鈕變成與通過 ColourPicker 選擇的顏色相同的顏色。我想要做的是將每個 ColourPicker 的顏色設定為不同的顏色,當我點擊按鈕時,來自 ColourPicker 的十六進制代碼被復制到我的剪貼板(如圖所示):
我希望能夠將該十六進制代碼粘貼到“在此處粘貼”框中。我遇到的問題是我擁有的代碼只允許我從第一個框中復制十六進制代碼。如果我單擊其他框,則不會復制任何內容。如果我更改按鈕 1 的顏色并單擊它,則會復制一個新的相應顏色并可以粘貼。
現在我已經設定(或至少正在嘗試),以便每個 ColourPicker 的十六進制代碼也輸入到 data.frame,并且 data.frame 由匹配正確索引的 rclipButtons 讀取以了解什么要復制的十六進制代碼。
我認為問題在于 data.frame 沒有隨著我輸入的數字的增加而增長,但我不知道為什么。有人可以幫忙嗎?謝謝!
這是我的代碼:
library(shiny)
library(shinythemes)
library(sortable)
library(colourpicker)
library(glue)
library(png)
library(dplyr)
library(DT)
library(rclipboard)
ui <- fluidPage(
rclipboardSetup(),
numericInput("num_conds",
label = h3("Enter the number of treatments/ conditions"),
min = 1,
max = 20,
value = 1),
uiOutput("cond_colors"),
htmlOutput("cond_buttons", align = 'center'),
# UI ouputs for the copy-to-clipboard buttons
uiOutput("clip"),
# A text input for testing the clipboard content.
textInput("paste", "Paste here:")
)
server <- function(input, output, session){
#####Number output for number of conditions#####
output$value = renderPrint({ input$num_conds })
#### Color selection for UI input####
output$cond_colors <- renderUI({
num_conds <- as.integer(input$num_conds)
lapply(1:num_conds, function(i) {
colourInput(paste0("colors", i),
label = (paste0("Select a color for condition ", i)),
show = c("both"),
value = "black",
palette = c("limited"),
)
})
})
#### Create action buttons for conditions to be selected####
output$cond_buttons <- renderUI({
num_conds = as.integer(input$num_conds)
lapply(1:num_conds, function(i) {
bg = input[[paste0("colors", i)]]
style = paste0(
collapse = " ",
glue("background-color:{bg};
color:#ffffff;
border-color:#000000")
)
label = input[[paste0("condID", i)]]
hex_df = data.frame(input[[paste0('colors', i)]])
cond_buttons = rclipButton(paste0("cond_buttons", i),
label = label,
style = style,
clipText = hex_df[1,i],
icon = NULL)
})
})
}
shinyApp(ui = ui, server = server)
uj5u.com熱心網友回復:
一個快速的解決方法是完全洗掉hex_df
,然后更改clipText
引數:
clipText = input[[paste0('colors', i)]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/491323.html
上一篇:根據向量選擇資料框值