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

点击按钮后在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:15:03