Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyQt5为每个组合框选项显示不同的复选框集

PyQt5为每个组合框选项显示不同的复选框集
EN

Stack Overflow用户
提问于 2019-03-14 11:27:35
回答 1查看 25关注 0票数 1

我正在尝试制作GUI应用程序,根据先前选择的组合框显示不同的复选框,例如,如果用户在组合框中选择“IT”,则将向他/她显示a,b,c复选框,如果用户选择其他复选框,则将向他/她显示x,y,z。

以下是我的代码,其中包含一些可能有用的注释:

代码语言:javascript
运行
AI代码解释
复制
import sys
from PyQt5 import QtWidgets, QtGui

class MainWindow:
    def __init__(self):
        self.app = QtWidgets.QApplication(sys.argv)
        self.window = QtWidgets.QMainWindow()

        self.departmentLabel()
        self.departmentComboBox()
        self.tracksLabel()

        self.window.show()
        self.window.setGeometry(600,200,600,600)


        sys.exit(self.app.exec_())


    def departmentLabel(self):
        self.selectDepartmentlabel = QtWidgets.QLabel("<h3>Select department: </h3>", self.window)
        self.selectDepartmentlabel.setGeometry(20,20,300,30)

    def departmentComboBox(self):
        self.departmentComboBox = QtWidgets.QComboBox(self.window)
        self.departmentComboBox.addItem('IT')
        self.departmentComboBox.addItem('Business')
        self.departmentComboBox.move(450,20)
        self.departmentComboBox.activated[str].connect(self.tracksCheckBox)

    def tracksLabel(self):
        self.selectTracksLabel = QtWidgets.QLabel('<h3>Select tracks: </h3>', self.window)
        self.selectTracksLabel.setGeometry(20,60,300,30)


    def tracksCheckBox(self):
        track = self.departmentComboBox.currentText()
        self.testCheckBox = QtWidgets.QLineEdit('Testing', self.window) # Does not execute.
        self.window.show()
        if (track == "IT"):
            print("Condition is met") # oddly enough, this executes normally.
            self.itcCheckBox = QtWidgets.QCheckBox('ITC', self.window) # Does not execute.
            self.itcCheckBox.move(20,100)
            self.nsCheckBox = QtWidgets.QCheckBox('NS', self.window) # Does not execute.
            self.nsCheckBox.move(80,100)
            self.csCheckBox = QtWidgets.QCheckBox('CS', self.window) # Does not execute.
            self.csCheckBox.move(140,100)

main = MainWindow()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-14 12:30:48

如果不更改应用程序的逻辑和设计,它可能如下所示:

代码语言:javascript
运行
AI代码解释
复制
import sys
from PyQt5 import QtWidgets, QtGui

class MainWindow:
    def __init__(self):
        self.app = QtWidgets.QApplication(sys.argv)
        self.window = QtWidgets.QMainWindow()

        self.departmentLabel()
        self.departmentComboBox()
        self.tracksLabel()

        self.window.show()
        self.window.setGeometry(600,100,600,600)

        self.itcCheckBox = None      # +++
        self.nsCheckBox  = None      # +++
        self.csCheckBox  = None      # +++

        sys.exit(self.app.exec_())


    def departmentLabel(self):
        self.selectDepartmentlabel = QtWidgets.QLabel("<h3>Select department: </h3>", self.window)
        self.selectDepartmentlabel.setGeometry(20,20,300,30)

    def departmentComboBox(self):
        self.departmentComboBox = QtWidgets.QComboBox(self.window)
        self.departmentComboBox.addItem('IT')
        self.departmentComboBox.addItem('Business')
        self.departmentComboBox.move(450,20)
        self.departmentComboBox.activated[str].connect(self.tracksCheckBox)

    def tracksLabel(self):
        self.selectTracksLabel = QtWidgets.QLabel('<h3>Select tracks: </h3>', self.window)
        self.selectTracksLabel.setGeometry(20,60,300,30)


    def tracksCheckBox(self, text):   # + text
        print(text, " <---> ", self.departmentComboBox.currentText())
        track = self.departmentComboBox.currentText()
        self.testCheckBox = QtWidgets.QLineEdit('Testing '+text, self.window) # Does not execute.

#        self.window.show()                           # ---
        self.testCheckBox.setGeometry(450,60,100,30)  # +++
        self.testCheckBox.show()                      # +++

        if self.itcCheckBox and self.nsCheckBox and self.csCheckBox: # +++
           self.itcCheckBox.deleteLater()
           self.itcCheckBox.hide()
           self.nsCheckBox.deleteLater()
           self.nsCheckBox.hide()
           self.csCheckBox.deleteLater()
           self.csCheckBox.hide()

        if (track == "IT"):
            print("Condition is met") # oddly enough, this executes normally.
            self.itcCheckBox = QtWidgets.QCheckBox('ITC', self.window) # Does not execute.
            self.itcCheckBox.move(20,100)
            self.nsCheckBox = QtWidgets.QCheckBox('NS', self.window) # Does not execute.
            self.nsCheckBox.move(80,100)
            self.csCheckBox = QtWidgets.QCheckBox('CS', self.window) # Does not execute.
            self.csCheckBox.move(140,100)
# +++ vvvvvvvvvvvvvvvvvvvvvv          
        else:
            self.itcCheckBox = QtWidgets.QCheckBox('XXXX', self.window) # Does not execute.
            self.itcCheckBox.move(20,100)
            self.nsCheckBox = QtWidgets.QCheckBox('Yyyy', self.window) # Does not execute.
            self.nsCheckBox.move(80,100)
            self.csCheckBox = QtWidgets.QCheckBox('Zzzz', self.window) # Does not execute.
            self.csCheckBox.move(140,100)        

        self.itcCheckBox.show()
        self.nsCheckBox.show()
        self.csCheckBox.show()
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^

main = MainWindow()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55161353

复制
相关文章
用OpenBSD的httpd在OpenBSD 6.5上运行WordPress
OpenBSD安装越接近默认值、并且没有添加多少包,它就越安全。虽然WordPress更常见的设置是使用Apache和PHP,但使用OpenBSD的内置httpd绝对是可行的(而且更可取)。本教程将让您完成获取一个Let's Encrypt证书、一个WEB服务器和WordPress的完整设置。您需要root用户访问权限才能执行此操作。
cnllww
2019/10/08
1.6K0
Linux如何在CLI模式下运行php文件
Dabenshi
2023/05/26
1.6K0
如何在windows下和linux下获取文件(如exe文件)的详细信息和属性
最近在项目开发中,由cs开发的exe的程序,需要自动升级,该exe程序放在linux下,自动升级时检测不到该exe程序的版本号信息,但是我们客户端的exe程序需要获取服务器上新程序的版本号信息。最后由我用java实现linux上exe文件的版本号读取功能。下面是详细代码:
业余草
2019/01/21
6.9K0
如何在windows下和linux下获取文件(如exe文件)的详细信息和属性
配置OpenBSD中的Bash
习惯了RedHat的那种Bash的风格,所以,对bashrc做了些修改 想一登陆的时候就能看到谁在系统中,并且看到时间: Last login: Mon Nov 9 08:29:28 2009OpenBSD 4.6 (GENERIC) #58: Thu Jul 9 21:24:42 MDT 2009Welcome to OpenBSD: The proactively secure Unix-like operating system.Please use the sendbug(1) utility to
用户3765803
2019/03/05
1.7K1
如何在 Systemd 下配置并运行关机前的脚本?
Systemd 是一种用于管理 Linux 系统的初始化和服务管理工具。它提供了强大的功能,允许用户在关机或重启系统之前运行自定义脚本。这对于执行清理任务、保存数据或执行其他系统管理操作非常有用。本文将详细介绍如何在 Systemd 下配置并运行关机前的脚本。
网络技术联盟站
2023/06/08
1.4K0
如何在 Systemd 下配置并运行关机前的脚本?
如何在云盘环境下,自动启用运行keydb集群
keydb号称可以重复利用磁盘来节省内存的成本, 如果要启用flash功能的话, 必须使用btrfs或者zfs, 本文介绍基于一种zfs的方案。
扫地工程师
2020/05/13
1.2K0
OpenBSD SMTP漏洞分析报告
安全人员在OpenBSD SMTP中发现了一个存在长达4年的漏洞,攻击者可利用该漏洞远程执行代码,多个linux发行版本受到影响。
FB客服
2020/03/03
1K0
如何在 Linux 中列出 Systemd 下所有正在运行的服务
Linux系统提供多种系统服务(如进程管理、登录、syslog、cron等)和网络服务(如远程登录、电子邮件、打印机、虚拟主机、数据存储、文件传输、域名解析等) (使用 DNS)、动态 IP 地址分配(使用 DHCP)等等)。
数据科学工厂
2023/08/10
5410
如何在 Linux 中列出 Systemd 下所有正在运行的服务
如何在CDSW上运行TensorFlow
前面Fayson也介绍了CDSW的安装及CDSW使用的一些知识,本篇文章主要介绍如何在CDSW平台上运行一个TensorFlow的示例,在学习本章知识前,你需要知道以下知识:
Fayson
2018/03/29
1.4K0
如何在Kubernetes 部署运行flink
Kubernetes 是目前非常流行的容器编排系统,在其之上可以运行 Web 服务、大数据处理等各类应用。这些应用被打包在一个个非常轻量的容器中,我们通过声明的方式来告知 Kubernetes 要如何部署和扩容这些程序,并对外提供服务。Flink 同样是非常流行的分布式处理框架,它也可以运行在 Kubernetes 之上。将两者相结合,我们就可以得到一个健壮和高可扩的数据处理应用,并且能够更安全地和其它服务共享一个 Kubernetes 集群。
zjiekou
2023/07/29
1.2K0
如何在Kubernetes 部署运行flink
OpenBSD里修改用户的shell
首先使用chsh来更新用户的shell 然后 pwd_mkdb /etc/passwd.master就可以了 因为要更新一下 /etc/pwd.db
用户3765803
2019/03/05
8680
如何在CDSW上运行TensorFlow
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 前面Fayson也介绍了CDSW的安装及CDSW使用的一些知识,本篇文章主要介绍如何在CDSW平台上运行一个TensorFlow的示例,在学习本章知识前,你需要知道以下知识: 《如何在Windows Server2008搭建DNS服务并配置泛域名解析》 《如何利用Dnsmasq构建小型集群的
企鹅号小编
2018/02/02
1.6K0
如何在CDSW上运行TensorFlow
如何在 .NET 库的代码中判断当前程序运行在 Debug 下还是 Release 下
发布于 2018-07-05 11:39 更新于 2018-09-01 00:00
walterlv
2018/09/18
1.8K0
如何在Windows中运行bash
当微软宣布,将在Windows10上面支持bash时,所有的Unix命令行用户都为之雀跃了。上周三,微软发布了一个测试版本,开始支持了这项功能。 为了运行bash,首先要进行几步操作。首先,需要获得Windows10的build 14316。 安装内测版本之后,用户需要切换到开发者模式,从设置>更新(Settings > Updates),安全>开发者(Security > For Developers)打开新的设置页面,选择“Windows Subsystem for Linux (Beta)”,重启
CSDN技术头条
2018/02/11
4K0
如何在Windows中运行bash
如何在Linux上运行SiteServer
4.修改默认端口【可选】 默认端口80,如果你80端口被占用可以修改其他端口 vim sscms.json
切图仔
2022/09/08
3.4K0
如何在Linux上运行SiteServer
封装Python代码:如何在未安装Python的情况下运行Python脚本
你知道吗?你可以封装你的python代码,并提供给其他人去运行,即便他们没有安装python。可以像计算机(Windows、Mac或Linux)上的任何程序/应用程序一样运行脚本,无需Python,无需安装库。
fanjy
2022/11/16
3.8K0
封装Python代码:如何在未安装Python的情况下运行Python脚本
Docker下运行springboot
原文地址:http://blog.csdn.net/boling_cavalry/article/details/78991870
程序员欣宸
2022/05/09
3160
Docker下运行springboot
dash & rbash & nc.openbsd ​| Linux 后门系列
今天在查找资料的时候在一篇文章中发现了 dash 和 nc.openbsd 这两个命令,dash、rbash、nc.openbsd 和 nc.traditional 这几个命令平时都很少遇到,所以一直也就不知道他们的存在,这次也是争取把这些补齐了,后续还有那些系统自带的可以反弹shell的命令我遗漏了大家可以反馈给我,我也学习一下
意大利的猫
2020/08/20
2.2K0
点击加载更多

相似问题

如何在VisualWorks中执行外部进程?

14

VisualWorks Smalltalk -在运行时设置滑块值

22

OpenBSD环境下的D语言编程

21

如何在visualworks中显示一组图像

12

如何在不修改的情况下让bash脚本在FreeBSD、OpenBSD和Linux上运行?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档