Python 读取UI文件并连接按钮、文本等元素

Python 读取UI文件并连接按钮、文本等元素,python,qt-designer,pyside2,Python,Qt Designer,Pyside2,我正在考虑使用PySide2,但是读取UI文件,而不是通过PySide2 uic生成Python。奇怪的是,我似乎找不到这种简单连接的例子 我看到了PyQt5和PySide2之间的区别: 但我不清楚在使用PySide2时按钮会如何连接 打开窗口的最简单代码在这里;我不能完全理解的是与UI中创建的元素(btnTest)挂钩的部分。我已经将这些东西用于Qt,但是语法让我无法理解。一旦解决了这个问题,剩下的就应该跟进了 import sys from PySide2 import QtCore, Q

我正在考虑使用PySide2,但是读取UI文件,而不是通过PySide2 uic生成Python。奇怪的是,我似乎找不到这种简单连接的例子

我看到了PyQt5和PySide2之间的区别:

但我不清楚在使用PySide2时按钮会如何连接

打开窗口的最简单代码在这里;我不能完全理解的是与UI中创建的元素(btnTest)挂钩的部分。我已经将这些东西用于Qt,但是语法让我无法理解。一旦解决了这个问题,剩下的就应该跟进了

import sys
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import (QToolTip, QMessageBox, QPushButton, \
QApplication, QCheckBox, QDialog, QFileDialog, QGraphicsScene, QWidget, \
QLabel,QMainWindow, QDialogButtonBox)

'''

button hookup is here

'''



if __name__ == '__main__':
    print("Program start.")
    loader = QUiLoader()
    app = QtWidgets.QApplication(sys.argv)
    window = loader.load("test.ui", None)
    window.show()
    app.exec_()
以及按钮的XML(.ui文件):

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>210</width>
    <height>117</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QPushButton" name="btnTest">
    <property name="geometry">
     <rect>
      <x>40</x>
      <y>30</y>
      <width>75</width>
      <height>23</height>
     </rect>
    </property>
    <property name="text">
     <string>PushButton</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>210</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

根据XML,按钮名称为btnTest:


因此,您必须使用该名称访问按钮:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>210</width>
    <height>117</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QPushButton" name="btnTest">
    <property name="geometry">
     <rect>
      <x>40</x>
      <y>30</y>
      <width>75</width>
      <height>23</height>
     </rect>
    </property>
    <property name="text">
     <string>PushButton</string>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>210</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>
导入系统 从PySide2导入QtWidgets、QtUiTools 如果名称=“\uuuuu main\uuuuuuuu”: 打印(“程序启动”) app=qtwidts.QApplication(sys.argv) loader=qtutools.QUiLoader() window=loader.load(“test.ui”,无) window.btnTest.clicked.connect(lambda:print(“clicked”)) window.show() sys.exit(app.exec_())
这让我开始了,谢谢。我还记得其他一些定义类的解决方案,所有的东西都放在那里。