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

PyQt技术问题:如何通过另一窗口按钮刷新当前窗口标签?

嘿,作为刚接触Python和PyQt5的树莓派玩家,你的需求我完全get到啦!下面我一步步帮你实现这个带对话框的触摸友好型GUI~

实现步骤详解

1. 先确认树莓派环境没问题

首先得确保树莓派上已经装好PyQt5全家桶,要是还没装,在LXTerminal里跑这条命令:
sudo apt-get install python3-pyqt5 pyqt5-dev-tools
(树莓派默认用Python3,所以直接装python3对应的包就行)

2. 用QtDesigner搞定两个界面

你已经会把.ui转成.py了,这里补充下两个界面的设计要点:

  • 主窗口(MainWindow):拖一个QLabel(用来显示后续从对话框获取的内容)和一个QPushButton(比如把按钮文本改成"打开输入框")
  • 对话框窗口(Dialog):拖一个QSpinBox(微调框,可以在属性面板里设置数值范围,比如0-100),再拖两个按钮分别做"确定"和"取消"

设计完分别保存成main_window.ui和input_dialog.ui,然后转成py文件:
pyuic5 -x main_window.ui -o main_window.py
pyuic5 input_dialog.ui -o input_dialog.py
(主窗口加-x是方便直接测试,对话框不需要,因为它是被主窗口调用的)

3. 编写核心逻辑代码

直接修改pyuic生成的文件不太好(重新设计UI会覆盖),所以咱们新建一个main.py来整合逻辑:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
from PyQt5.QtCore import Qt
from main_window import Ui_MainWindow
from input_dialog import Ui_Dialog

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        # 把按钮点击事件绑定到自定义函数
        self.pushButton.clicked.connect(self.open_input_dialog)

    def open_input_dialog(self):
        # 创建对话框实例
        dialog = InputDialog()
        # 显示对话框,等待用户操作
        if dialog.exec_() == QDialog.Accepted:
            # 获取微调框的值,更新主窗口的标签
            selected_value = dialog.spinBox.value()
            self.label.setText(f"你选择的数值是:{selected_value}")

class InputDialog(QDialog, Ui_Dialog):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        # 绑定确定/取消按钮的事件
        self.pushButton_ok.clicked.connect(self.accept)
        self.pushButton_cancel.clicked.connect(self.reject)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    # 针对触摸屏幕优化,让控件显示更适配
    app.setAttribute(Qt.AA_EnableHighDpiScaling)
    main_win = MainWindow()
    # 要是想全屏显示(更适合触摸),就把下面这行注释打开
    # main_win.showFullScreen()
    main_win.show()
    sys.exit(app.exec_())

几个要注意的小细节:

  • 代码里的控件名字要和QtDesigner里的一致,比如你把主窗口的按钮命名成btn_open_dialog,那代码里就要改成self.btn_open_dialog.clicked.connect(...)
  • 触摸屏的话,建议在QtDesigner里把控件的minimumSize调大一点,比如按钮设成80x40,这样触摸起来更顺手
  • 可以给微调框设默认值,要么在QtDesigner里改value属性,要么在代码里加self.spinBox.setValue(50)

4. 运行程序

在LXTerminal里输入这条命令启动:
python3 main.py
点击主窗口的按钮,就能弹出对话框,调整微调框后点确定,主窗口的标签就会显示你选的数值啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:43:58