点击按钮后在PyQt窗口指定Widget区域显示QtChart图表的实现问题
解决方案
你只需要修改gui.py文件中Ui_MainWindowTax类的两处代码即可实现需求:
第一步:给预留的图表容器组件添加布局
在setupUi方法中,widget_chart实例化完成后添加两行代码,为其配置垂直布局:
self.widget_chart = QWidget(self.centralwidget) self.widget_chart.setObjectName("widget_chart") self.widget_chart.setGeometry(QtCore.QRect(40, 240, 381, 331)) # 新增代码开始 self.chart_layout = QVBoxLayout(self.widget_chart) self.chart_layout.setContentsMargins(0, 0, 0, 0) # 移除内边距,让图表撑满整个预留区域 # 新增代码结束
第二步:修改计算按钮点击逻辑,将图表加入布局
把button_calculate_click方法末尾注释的#self.widget_chart.setLayout(chartview)替换为以下代码,实现每次计算时先清空旧图表,再加载新生成的图表:
chartview = QChartView(chart) chartview.setRenderHint(QPainter.Antialiasing) # 新增代码开始 # 清空之前存在的旧图表 while self.chart_layout.count() > 0: item = self.chart_layout.takeAt(0) if item.widget(): item.widget().deleteLater() # 将新图表添加到布局中 self.chart_layout.addWidget(chartview) # 新增代码结束
可选优化
可以给薪资输入框添加数字校验,避免用户输入非数字内容时程序崩溃:在setupUi方法中txt_salary实例化完成后添加如下代码:
self.txt_salary.setValidator(QtGui.QIntValidator(0, 1000000, self.centralwidget))
这样输入框就只能输入0-1000000区间的整数了。
内容的提问来源于stack exchange,提问作者smlcfc
相关产品推荐
相关产品推荐

