如何引用我在 Qt Designer 中创建的按钮?

How do I reference a button that I created in Qt Designer?

我在QT6 creator中创建了一个按钮并将其命名为scanButton。当我 运行 代码时,该按钮出现。但是,一旦我想将它绑定到一个函数,我就会 运行 遇到一个问题。我终于得到了一个结果,但它在左上角显示了一个新按钮,它 运行s self.close,这不应该是这种情况。

.ui 代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>Widget</class>
     <widget class="QWidget" name="Widget">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>800</width>
        <height>600</height>
       </rect>
      </property>
      <property name="windowTitle">
       <string>Widget</string>
      </property>
      <widget class="QPushButton" name="scanButton">
       <property name="geometry">
        <rect>
         <x>280</x>
         <y>210</y>
         <width>181</width>
         <height>141</height>
        </rect>
       </property>
       <property name="text">
        <string>Scan</string>
       </property>
      </widget>
     </widget>
     <resources/>
     <connections/>
    </ui>
   

.py代码:

    import os
    from pathlib import Path
    import sys
    
    from PySide6.QtWidgets import QApplication, QWidget, QPushButton
    from PySide6.QtCore import QFile
    from PySide6.QtUiTools import QUiLoader
    
    
    class Widget(QWidget):
        def __init__(self):
            super(Widget, self).__init__()
            self.load_ui()
    
        def load_ui(self):
            loader = QUiLoader()
            path = os.fspath(Path(__file__).resolve().parent / "form.ui")
            ui_file = QFile(path)
            ui_file.open(QFile.ReadOnly)
            loader.load(ui_file, self)
            ui_file.close()
    
            scanButton = QPushButton(self)
            scanButton.clicked.connect(self.close)
    
    
    if __name__ == "__main__":
        app = QApplication([])
        widget = Widget()
        widget.show()
        sys.exit(app.exec_())

首先你需要加载你的 ui 文件:

self.ui = loader.load('form.ui', None)
self.ui.show()

然后你可以用这样的名字调用你的按钮:

self.ui.scanButton.clicked.connect(self.check)

请注意,当您按下按钮时,它将转到 check 函数。

完整代码:

class main(QWindow):
    def __init__(self):
        super().__init__()
        loader = QUiLoader()
        self.ui = loader.load('form.ui', None)
        self.ui.show()

        self.ui.scanButton.clicked.connect(self.check)
    
    def check(self):
        print('You pressed the button!')