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
相关产品推荐
相关产品推荐

