首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Shinyalert:我如何知道用户是按了OK还是Cancel?

Shinyalert是一个用于在Shiny应用程序中创建弹出式警报框的R包。它提供了一种简单的方法来与用户进行交互,并获取他们的响应。当用户按下OK或Cancel按钮时,您可以通过以下方式知道用户的选择:

  1. 使用触发按钮:您可以在弹出警报框中添加一个触发按钮,例如"确认"或"取消"。当用户按下按钮时,您可以通过触发按钮的回调函数来获取用户的选择。根据用户的选择,您可以执行相应的操作或采取适当的措施。
  2. 使用回调函数:您可以在弹出警报框中设置回调函数,以便在用户按下OK或Cancel按钮时触发。回调函数将接收一个参数,该参数指示用户的选择。您可以根据该参数的值来确定用户是按下了OK还是Cancel。

以下是一个示例代码,展示了如何使用Shinyalert来获取用户的选择:

代码语言:R
复制
library(shiny)
library(shinyalert)

ui <- fluidPage(
  useShinyalert(),
  
  actionButton("show_alert", "显示警报框")
)

server <- function(input, output, session) {
  observeEvent(input$show_alert, {
    shinyalert(
      title = "警报框",
      text = "您确定要执行此操作吗?",
      type = "warning",
      showCancelButton = TRUE,
      closeOnClickOutside = FALSE,
      callbackR = TRUE,
      callback = jsCallback
    )
  })
  
  jsCallback <- '
    function (isConfirm) {
      if (isConfirm) {
        // 用户按下了OK按钮
        Shiny.setInputValue("user_choice", "OK");
      } else {
        // 用户按下了Cancel按钮
        Shiny.setInputValue("user_choice", "Cancel");
      }
    }
  '
  
  observeEvent(input$user_choice, {
    choice <- input$user_choice
    
    if (choice == "OK") {
      # 用户按下了OK按钮,执行相应的操作
      # ...
    } else if (choice == "Cancel") {
      # 用户按下了Cancel按钮,采取适当的措施
      # ...
    }
  })
}

shinyApp(ui, server)

在上述示例中,我们使用了shinyalert函数来创建一个警报框。设置showCancelButton参数为TRUE以显示取消按钮。在回调函数jsCallback中,我们使用Shiny.setInputValue函数将用户的选择传递给Shiny应用程序的服务器端。然后,我们使用observeEvent来监听input$user_choice的变化,并根据用户的选择执行相应的操作。

请注意,上述示例中没有提及任何特定的腾讯云产品或链接地址。如果您需要与腾讯云相关的产品和链接,请参考腾讯云的官方文档或咨询腾讯云的技术支持团队。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言C加加编程新手基础入门,学习之嵌入式系统编程,修炼之屏幕操作

笔者曾经个笨蛋,被菜单搞晕了,给出这样的一个系统: 要求以键盘上的" "键切换菜单焦点,当用户在焦点处于某菜单时,若敲击键盘上的OKCANCEL键则调用该焦点菜单对应之处理函数。...曾经傻傻地这样做着: /* OK键 */ void onOkKey() { /* 判断在什么焦点菜单上Ok键,调用相应处理函数 */ Switch(currentFocus) { case MENU1...: menu1OnOk(); break; case MENU2: menu2OnOk(); break; … } } /* Cancel键 */ void onCancelKey() { /* 判断在什么焦点菜单上下...键和CANCEL键的处理变成: /* OK键 */ void onOkKey() { menu[currentFocusMenu].onOkFun(); } /* Cancel键 */ void.../* 参数说明: lpStr --- 提醒用户的字符串输出信息 /* 返回值: 返回对话框接收的键值,只有两种 KEY_OK, KEY_CANCEL /************************

1.2K70

C语言嵌入式系统编程修炼之屏幕操作

笔者曾经个笨蛋,被菜单搞晕了,给出这样的一个系统: 要求以键盘上的"← →"键切换菜单焦点,当用户在焦点处于某菜单时,若敲击键盘上的OKCANCEL键则调用该焦点菜单对应之处理函数。...曾经傻傻地这样做着: /* OK键 */ void onOkKey() { /* 判断在什么焦点菜单上Ok键,调用相应处理函数 */ Switch(currentFocus) { case MENU1...: menu1OnOk(); break; case MENU2: menu2OnOk(); break; … } } /* Cancel键 */ void onCancelKey() { /* 判断在什么焦点菜单上下...键和CANCEL键的处理变成: /* OK键 */ void onOkKey() { menu[currentFocusMenu].onOkFun(); } /* Cancel键 */ void...总结 本篇本系列文章中技巧性最深的一篇,它提供嵌入式系统屏幕显示方面一些很巧妙的处理方法,灵活使用它们,我们将不再被LCD上凌乱不堪的显示内容所困扰。

1.2K80

Android最佳性能实践(四)——布局优化技巧

这里还是通过举例的方式跟大家说明一下,比如说我们需要编写一个确定取消按钮的公共布局,这样任何一个界面需要确定和取消功能时就不用再单独编写了,新建ok_cancel_layout.xml,代码如下所示:...而这个多余的布局嵌套其实就是由于布局引入所导致的,因为我们在ok_cancel_layout.xml中也定义一个LinearLayout。那么应该怎样优化掉这个问题呢?...说到实现这样一个功能,相信大多数人的第一反应就是将不常用的元素使用INVISIBLE或者GONE进行隐藏,然后当用户需要使用这些元素的时候再把它们置成VISIBLE显示出来。...使用这种方式肯定可以实现功能的,但是性能方面就表现得一般,因为即使将元素进行隐藏,它们其实还是在布局当中的,每个元素还拥有着自己的宽、高、背景等等属性,解析布局的时候也会将这些隐藏的元素一一解析出来...另外需要提醒大家一点,ViewStub所加载的布局不可以使用标签的,因此这有可能导致加载出来的布局存在着多余的嵌套结构,具体如何去取舍就要根据各自的实际情况来决定,对于那些隐藏的布局文件结构相当复杂的情况

1.3K81

小白也能看懂的context包详解:从入门到精通

前言 哈喽,大家好,asong。...今天想与大家分享context包,经过一年的沉淀,重新出发,基于Go1.17.1从源码角度再次分析,不过这次不同的打算先从入门开始,因为大多数初学的读者都想先知道怎么用,然后才会关心源码如何实现的...context被当作第一个参数(官方建议),并且不断透传下去,基本一个项目代码中到处都是context,但是你们真的知道它有何作用吗以及它是如何起作用的吗?...cancel方法 最后我们再来看一下返回的cancel方法如何实现,这个方法会关闭上下文中的 Channel 并向所有的子上下文同步取消信号: func (c *cancelCtx) cancel(removeFromParent...asong,我们下期见。

64620

小白也能看懂的context包详解:从入门到精通

前言 今天想与大家分享context包,经过一年的沉淀,重新出发,基于Go1.17.1从源码角度再次分析,不过这次不同的打算先从入门开始,因为大多数初学的读者都想先知道怎么用,然后才会关心源码如何实现的...context被当作第一个参数(官方建议),并且不断透传下去,基本一个项目代码中到处都是context,但是你们真的知道它有何作用吗以及它是如何起作用的吗?...就是自己有封装了一层,具体代码和实现就贴在这里,有兴趣可以看一下gin.Context如何实现的。...我们先返回去看propagateCancel如何做构建父子Context之间的关联。...cancel方法 最后我们再来看一下返回的cancel方法如何实现,这个方法会关闭上下文中的 Channel 并向所有的子上下文同步取消信号: func (c *cancelCtx) cancel(removeFromParent

3.6K20

Qt中使用标准输入框

; 第四个参数mode用于指明这个QLineEdit的输入模式,取值范围QLineEdit::EchoMode,默认Normal,也就是正常显示,你也可以声明为password,这样就是密码的输入显示...; 第五个参数textQLineEdit的默认字符串; 第六个参数 ok可选的,如果非NLL,则当用户下对话框的OK按钮时,这个bool变量会被置为true,可以由这个去判断用户下的...OK还是Cancel,从而获知这个text是不是有意义; 第七个参数flags用于指定对话框的样式。...设置文字是否可以编辑 第七个参数 ok可选的,如果非NLL,则当用户下对话框的OK按钮时,这个bool变量会被置为true,可以由这个去判断用户下的OK还是Cancel,从而获知这个text...如果非NLL,则当用户下对话框的OK按钮时,这个bool变量会被置为true,可以由这个去判断用户下的OK还是Cancel,从而获知这个text是不是有意义; 第九个参数flags用于指定对话框的样式

1.2K40

Context源码,再度重相逢

各位读者朋友们大家好,随波逐流的薯条。深秋,前几天气温骤降,北京的人和狗都不愿意出门,趴在窝里冻的打寒颤。...的书房里没装空调,暖气要十一月中旬才来,每次想学习都得下很大的决心,所以这篇文章发出来时比预期又晚了几天~ 最近的心也是冰冰的,目前做在线数据开发,如果大家干过这活肯定知道,数据开发最重要的数据口径...,读者有兴趣可以给go团队提个pr,把链表改成红黑树试试,嘿嘿~ ctx的取消机制 context的取消机制个人认为可以分成两种:第一种普通取消,需要取消ctx时调用cancel函数。...第二个根据时间取消,用户可以定义一个过期time或一个deadline,到这个时间时自动取消。 普通取消 现在假装没看源码,联想一下如果我们自己实现。该如何写取消。...所以这个else分支主要是预防用户自己实现一个定制的Ctx中,随意提供一个Done chan的情况的,由于找不到可取消的父节点的,只好新起一个协程做监听。

21710

轻松上手!手把手带你掌握从Context到go设计理念

go的Context作为go并发方式的一种,无论在源码net/http中,开源框架例如gin中,还是内部框架trpc-go中都是一个比较重要的存在,而整个 context 的实现也就不到600行,所以也想借着这次机会来学习学习...接口(记住前面说得另外两个直接实现,这俩嵌套接口实现松耦合,后面再说具体好处),下面逐一讲解每个实现。...这里应该也看明白为何canceler为何一个可导出Done一个不可导出 cancel,Done重写Context的method会由上层调用,所以要可导出, cancel则是由return func(...否则就创建一个定时器,当时间到达会调用取消函数,这里定时调用,也可能用户主动调用。...context包里就有相应实现,也很简单,就是 switch case来判断v类型并返回,它这么做的原因也有说: “因为我们不希望上下文依赖于unicode表”,这句话还没理解,有知道的小伙伴可以在底下评论

36330

源码分析 | 深度解密Go语言之context

不论它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获!...而我们知道,协程要消耗系统资源的,后果就是协程数激增,内存占用飙涨,甚至导致服务不可用。更严重的会导致雪崩效应,整个服务对外表现为不可用,这肯定是 P0 级别的事故。这时,肯定有人要背锅。...在取消函数内部,知道所有的子节点都会因为的一:c.children=nil 而化为灰烬。自然就没有必要再多做这一步,最后所有的子节点都会和我断绝关系,没必要一个个做。...你根本就不知道什么时候什么地方传什么值?这些值会不会被“覆盖”(底层两个不同的 context 节点,查找的时候,只会返回一个结果)?你肯定会崩溃的。...我们知道,对链表的操作,通常都是 O(n) 复杂度的,效率不高。 那么,context 包到底解决什么问题呢?答案:cancelation。仅管它并不完美,但它确实很简洁地解决问题。

97530

面试官不要再问我axios能手写简易版的axios

设计的巧妙, 维护一个栈结构 + promise 的链式调用 实现 拦截器的功能, 可能有的小伙伴到这里还是不是很能理解,还是给大家画一个草图去模拟下这个过程。...adapter Adapter: 英文解释适配器的意思。这里就不实现带大家看一下源码。adapter 做了一件事非常简单,就是根据不同的环境 使用不同的请求。...如果用户自定义adapter,就用config.adapter。否则就是默认default.adpter....ok请求的方法在下面模拟写出。 cancleToken 首先问大家一个问题,取消请求原生浏览器怎么做到的?有一个abort 方法。可以取消请求。那么axios源码肯定也是运用了这一点去取消请求。...如何取消请求的。

72210

面试官不要再问我 axios 能手写简易版的 axios

设计的巧妙, 维护一个栈结构 + promise 的链式调用 实现 拦截器的功能, 可能有的小伙伴到这里还是不是很能理解,还是给大家画一个草图去模拟下这个过程。...adapter Adapter: 英文解释适配器的意思。这里就不实现带大家看一下源码。adapter 做了一件事非常简单,就是根据不同的环境 使用不同的请求。...如果用户自定义adapter,就用config.adapter。否则就是默认default.adpter....ok请求的方法在下面模拟写出。 cancleToken 首先问大家一个问题,取消请求原生浏览器怎么做到的?有一个abort 方法。可以取消请求。那么axios源码肯定也是运用了这一点去取消请求。...如何取消请求的。

66030

关于DialogResult

大家好,又见面你们的朋友全栈君。 在程序中,经常会弹出一个对话框来让用户填写一些信息,填写完成后,当用户点击“确定”按钮后,在主窗体中进行其他的处理。...比如一个简单的例子,在主窗体中有一个菜单,“增加用户”,当点击这个菜单之后,我们需要弹出一个增加用户的窗体出来,就假设“增加用户”的窗体叫frmAddUser,那么代码如下: 1: frmAddUser...现在有一个问题就是,“增加用户”的窗体如下: 如果想判断一下,用户输入的邮件格式是否正确,那么该把这段代码放在哪呢?...,而是继续留在这个窗体上,等待用户修改,可是事实却不是这样,因为你设置“确定”按钮的Dialogue属性,只要用户一点击按钮,主窗体中的 1: if (frm.ShowDialog() == DialogResult.OK...可以使用此属性确定对话框如何关闭的,以便正确处理在该对话框中执行的操作。

99210

函数响应式编程及ReactiveObjC学习笔记 (二)

官方这样说的, RAC为我们提供简单便捷实现代理 / block回调 / 事件 / 通知 / KVO的方式 我们先看RAC如何帮助我们快速实现KVO 首先我们新建一个Student类, 给它一个age...这里其实RAC还为我们提供除了subscriber以外的操作, 后面再介绍给, 现在我们主要先来看RAC怎么替我们做KVO的 我们再看看RAC如何帮我们实现target-action 我们创建一个项目...clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { NSLog(@"点击Cancel...按钮"); } else { NSLog(@"点击Ok按钮"); } } @end 初始化alertView, 实现代理方法 这是我们常规的用法 那么我们再看看...本身, 第二个index, 然后可以我们的需要做处理了 另外要注意的用RAC写代理有局限的,它只能实现返回值为void的代理方法 先到这里, 现在我们知道我们能用RAC做什么 下次我们继续看RAC

46411

Go进阶(3):上下文context

*/ 上面例子中: 一个任务结束必须等待另外一个任务也结束才算全部结束,先完成的必须等待其他未完成的,所有的goroutine都要全部完成才OK。...1、emptyCtx (默认上下文) context包中最常用的方法还是 context.Background、context.TODO,这两个方法分别返回一个实现 Context 接口的 background...context 如何实现跨 goroutine 的取消事件并传播开来的,如何实现的?...那多个父子级 context 如何实现跨 context 的上下文信息获取的?...在真正使用传值的功能时我们也应该非常谨慎,使用 context.Context 传递请求的所有参数一种非常差的设计,比较常见的使用场景传递请求对应用户的认证令牌以及用于进行分布式追踪的请求 ID。

59820

深度解密Go语言之context

不论它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获! 贴上文章的目录: ?...而我们知道,协程要消耗系统资源的,后果就是协程数激增,内存占用飙涨,甚至导致服务不可用。更严重的会导致雪崩效应,整个服务对外表现为不可用,这肯定是 P0 级别的事故。这时,肯定有人要背锅。...在取消函数内部,知道所有的子节点都会因为的一:c.children=nil 而化为灰烬。自然就没有必要再多做这一步,最后所有的子节点都会和我断绝关系,没必要一个个做。...你根本就不知道什么时候什么地方传什么值?这些值会不会被“覆盖”(底层两个不同的 context 节点,查找的时候,只会返回一个结果)?你肯定会崩溃的。...我们知道,对链表的操作,通常都是 O(n) 复杂度的,效率不高。 那么,context 包到底解决什么问题呢?答案:cancelation。仅管它并不完美,但它确实很简洁地解决问题。

80120

Go Context 详解之终极无惑

父协程与子孙协程之间关联在一起的,他们需要共享请求的相关信息,比如用户登录态,请求超时时间等。如何将这些协程联系在一起,context 应运而生。 话说回来,为什么要将这些协程关联在一起呢?...caller 不应该去关心、干涉 callee 的情况,决定如何以及何时 return callee 的责任。...// set to non-nil by the first cancel call } cancelCtx 一个未导出类型,通过创建函数WithCancel()暴露给用户使用。...你根本就不知道什么时候什么地方传什么值?这些值会不会被“覆盖”(底层两个不同的 Context 节点,查找的时候,只会返回一个结果)?你肯定会崩溃的。...我们知道,对链表的操作,通常都是 O(n) 复杂度的,效率不高。 Context 解决的核心问题 cancelation,即便它不完美,但它却简洁地解决这个问题。

3.6K42
领券