You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5技术咨询:如何使QInputDialog.getItem的取消按钮正常工作

解决QInputDialog取消按钮未触发关闭窗口的问题

嘿,我来帮你捋捋这个问题~ 你现在遇到的情况,大概率是没对QInputDialog返回的ok状态做判断导致的。

咱们先搞懂关键逻辑:QInputDialog.getItem()返回的第二个值self.ok,是用来标记用户点击的是确认还是取消——用户点取消时,self.ok会是False,点确认时才是True。如果你的代码里没区分这个状态,不管用户点啥都执行了打开新窗口的逻辑,那自然会出现点取消反而开窗口的问题。

修正后的代码示例

passanger = ('1', '2', '3', '4')
self.selection, self.ok = QInputDialog.getItem(self, "Choose the passanger", "Passanger", passanger, 0, False)

# 关键:根据ok的状态分支处理
if not self.ok:
    # 用户点击取消,关闭当前窗口
    self.close()
else:
    # 用户确认选择,执行打开新窗口的逻辑
    # 把你原来打开新窗口的代码移到这里,比如:
    # self.new_window = NewWindow()
    # self.new_window.show()
    pass

逻辑说明

  • 当用户点击取消按钮,self.ok为False,进入第一个分支执行self.close(),直接关闭当前窗口;
  • 只有当用户选择了乘客并点击确认,self.ok为True时,才会执行打开新窗口的操作,完美区分两种场景。

你只需要把原来打开新窗口的代码移到else分支里,取消按钮的逻辑就正常啦~

内容的提问来源于stack exchange,提问作者A fish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 20:48:15