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

PyQt5+Qt Designer主窗口如何调用子窗口输入完成数值缩放?

要实现两个窗口的交互,核心是在子窗口点击OK时把缩放系数传递给主窗口,这里用Qt自带的信号槽机制实现最为规范,修改代码如下:

from ui_Stackoverflow1 import *
from ui_Stackoverflow2 import *
import sys

class ScaleApp(QObject, Ui_ScaleWindow):
    # 自定义信号,用于传递输入的缩放系数
    scale_confirmed = Signal(float)

    def __init__(self, window2):
        super().__init__()
        self.setupUi(window2)
        self.target_window = window2
        # 绑定按钮点击事件
        self.ok_button.clicked.connect(self.handle_ok)
        self.cancel_button.clicked.connect(self.target_window.close)

    def handle_ok(self):
        # 提取输入的缩放值,发射信号后关闭窗口
        scale_value = self.scaling_box.value()
        self.scale_confirmed.emit(scale_value)
        self.target_window.close()


class ButtonConnection(Ui_MainWindow):
    def __init__(self, window):
        self.setupUi(window)
        self.pushButton.clicked.connect(self.open_scale_window)

        self.important_number = 5
        self.lineEdit.setText(str(self.important_number))

    def open_scale_window(self):
        self.scale_window = QMainWindow()
        self.scale_ui = ScaleApp(self.scale_window)
        # 绑定子窗口的缩放信号到当前类的更新方法
        self.scale_ui.scale_confirmed.connect(self.update_display_number)
        self.scale_window.show()

    def update_display_number(self, scale_val):
        # 执行缩放并更新显示
        self.important_number *= scale_val
        self.lineEdit.setText(str(self.important_number))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    ui = ButtonConnection(MainWindow)
    MainWindow.show()
    app.exec_()

可选优化

如果希望弹出缩放窗口时禁止操作主窗口,可将open_scale_window方法修改为以下内容,使用模态对话框实现:

def open_scale_window(self):
    # 改用QDialog实现模态效果
    self.scale_window = QDialog()
    self.scale_ui = ScaleApp(self.scale_window)
    self.scale_ui.scale_confirmed.connect(self.update_display_number)
    # 用exec_()替代show(),阻塞主窗口操作直到弹窗关闭
    self.scale_window.exec_()

内容的提问来源于stack exchange,提问作者Kai Winkler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:27:00