在上一节课中我们已经将界面实现了,这一节课我们会将界面中的按钮功能进行实现!!
第一节课的链接:点我
第二节课的链接:点我
在上一节课中我们已经将ui文件转换为py文件
上一节课代码:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_FindAndReplaceDlg ( object ) :
def setupUi ( self, FindAndReplaceDlg) :
FindAndReplaceDlg. setObjectName( "FindAndReplaceDlg" )
FindAndReplaceDlg. resize( 424 , 180 )
self. line = QtWidgets. QFrame( FindAndReplaceDlg)
self. line. setGeometry( QtCore. QRect( 297 , 9 , 20 , 161 ) )
self. line. setFrameShape( QtWidgets. QFrame. VLine)
self. line. setFrameShadow( QtWidgets. QFrame. Sunken)
self. line. setObjectName( "line" )
self. widget = QtWidgets. QWidget( FindAndReplaceDlg)
self. widget. setGeometry( QtCore. QRect( 10 , 9 , 286 , 158 ) )
self. widget. setObjectName( "widget" )
self. verticalLayout = QtWidgets. QVBoxLayout( self. widget)
self. verticalLayout. setContentsMargins( 0 , 0 , 0 , 0 )
self. verticalLayout. setObjectName( "verticalLayout" )
self. gridLayout = QtWidgets. QGridLayout( )
self. gridLayout. setObjectName( "gridLayout" )
self. label = QtWidgets. QLabel( self. widget)
self. label. setTextFormat( QtCore. Qt. AutoText)
self. label. setObjectName( "label" )
self. gridLayout. addWidget( self. label, 0 , 0 , 1 , 1 )
self. findLineEdit = QtWidgets. QLineEdit( self. widget)
self. findLineEdit. setObjectName( "findLineEdit" )
self. gridLayout. addWidget( self. findLineEdit, 0 , 1 , 1 , 1 )
self. label_2 = QtWidgets. QLabel( self. widget)
self. label_2. setObjectName( "label_2" )
self. gridLayout. addWidget( self. label_2, 1 , 0 , 1 , 1 )
self. replaceLineEdit = QtWidgets. QLineEdit( self. widget)
self. replaceLineEdit. setObjectName( "replaceLineEdit" )
self. gridLayout. addWidget( self. replaceLineEdit, 1 , 1 , 1 , 1 )
self. verticalLayout. addLayout( self. gridLayout)
self. horizontalLayout = QtWidgets. QHBoxLayout( )
self. horizontalLayout. setObjectName( "horizontalLayout" )
self. caseCheckBox = QtWidgets. QCheckBox( self. widget)
self. caseCheckBox. setObjectName( "caseCheckBox" )
self. horizontalLayout. addWidget( self. caseCheckBox)
self. wholeCheckBox = QtWidgets. QCheckBox( self. widget)
self. wholeCheckBox. setChecked( False )
self. wholeCheckBox. setObjectName( "wholeCheckBox" )
self. horizontalLayout. addWidget( self. wholeCheckBox)
self. verticalLayout. addLayout( self. horizontalLayout)
self. horizontalLayout_2 = QtWidgets. QHBoxLayout( )
self. horizontalLayout_2. setObjectName( "horizontalLayout_2" )
self. label_3 = QtWidgets. QLabel( self. widget)
self. label_3. setObjectName( "label_3" )
self. horizontalLayout_2. addWidget( self. label_3)
self. syntaxComboBox = QtWidgets. QComboBox( self. widget)
self. syntaxComboBox. setObjectName( "syntaxComboBox" )
self. syntaxComboBox. addItem( "" )
self. syntaxComboBox. addItem( "" )
self. horizontalLayout_2. addWidget( self. syntaxComboBox)
self. verticalLayout. addLayout( self. horizontalLayout_2)
spacerItem = QtWidgets. QSpacerItem( 20 , 40 , QtWidgets. QSizePolicy. Minimum, QtWidgets. QSizePolicy. Expanding)
self. verticalLayout. addItem( spacerItem)
self. widget1 = QtWidgets. QWidget( FindAndReplaceDlg)
self. widget1. setGeometry( QtCore. QRect( 316 , 10 , 99 , 155 ) )
self. widget1. setObjectName( "widget1" )
self. verticalLayout_2 = QtWidgets. QVBoxLayout( self. widget1)
self. verticalLayout_2. setContentsMargins( 0 , 0 , 0 , 0 )
self. verticalLayout_2. setObjectName( "verticalLayout_2" )
self. findButton = QtWidgets. QPushButton( self. widget1)
self. findButton. setObjectName( "findButton" )
self. verticalLayout_2. addWidget( self. findButton)
self. replaceButton = QtWidgets. QPushButton( self. widget1)
self. replaceButton. setObjectName( "replaceButton" )
self. verticalLayout_2. addWidget( self. replaceButton)
self. replaceAllButton = QtWidgets. QPushButton( self. widget1)
self. replaceAllButton. setObjectName( "replaceAllButton" )
self. verticalLayout_2. addWidget( self. replaceAllButton)
spacerItem1 = QtWidgets. QSpacerItem( 20 , 13 , QtWidgets. QSizePolicy. Minimum, QtWidgets. QSizePolicy. Fixed)
self. verticalLayout_2. addItem( spacerItem1)
self. closeButton = QtWidgets. QPushButton( self. widget1)
self. closeButton. setObjectName( "closeButton" )
self. verticalLayout_2. addWidget( self. closeButton)
self. label. setBuddy( self. findLineEdit)
self. label_2. setBuddy( self. replaceLineEdit)
self. label_3. setBuddy( self. syntaxComboBox)
self. retranslateUi( FindAndReplaceDlg)
self. closeButton. clicked. connect( FindAndReplaceDlg. reject)
QtCore. QMetaObject. connectSlotsByName( FindAndReplaceDlg)
def retranslateUi ( self, FindAndReplaceDlg) :
_translate = QtCore. QCoreApplication. translate
FindAndReplaceDlg. setWindowTitle( _translate( "FindAndReplaceDlg" , "Find and Replace" ) )
self. label. setText( _translate( "FindAndReplaceDlg" , "Find &what:" ) )
self. label_2. setText( _translate( "FindAndReplaceDlg" , "Replace with:" ) )
self. caseCheckBox. setText( _translate( "FindAndReplaceDlg" , "&Case sensitive" ) )
self. wholeCheckBox. setText( _translate( "FindAndReplaceDlg" , "Wh&ole words" ) )
self. label_3. setText( _translate( "FindAndReplaceDlg" , "&Syntax:" ) )
self. syntaxComboBox. setItemText( 0 , _translate( "FindAndReplaceDlg" , "Literal text" ) )
self. syntaxComboBox. setItemText( 1 , _translate( "FindAndReplaceDlg" , "Regular expression" ) )
self. findButton. setText( _translate( "FindAndReplaceDlg" , "&Find" ) )
self. replaceButton. setText( _translate( "FindAndReplaceDlg" , "&Replace" ) )
self. replaceAllButton. setText( _translate( "FindAndReplaceDlg" , "Replace &All" ) )
self. closeButton. setText( _translate( "FindAndReplaceDlg" , "Close" ) )
1、我们将上面的代码最后部分注释掉
if __name__ == '__main__' :
app = QtWidgets. QApplication( sys. argv)
mainWindow = QtWidgets. QDialog( )
ui = Ui_FindAndReplaceDlg( )
ui. setupUi( mainWindow)
mainWindow. show( )
sys. exit( app. exec_( ) )
2、我们新建一个 py 文件
'''
@Time :2023/8/22 15:34
@作者 :一晌小贪欢
@联系 :278865463@qq.com
'''
import re
from PyQt5. QtWidgets import *
from PyQt5. QtCore import *
from PyQt5. QtGui import *
import untitled
MAC = True
try :
from PyQt5. QtGui import qt_mac_set_native_menubar
except ImportError:
MAC = False
class FindAndReplaceDlg ( QDialog,
untitled. Ui_FindAndReplaceDlg) :
found = pyqtSignal( int )
notfound = pyqtSignal( int )
def __init__ ( self, text, parent= None ) :
super ( FindAndReplaceDlg, self) . __init__( parent)
self. __text = text
self. __index = 0
self. setupUi( self)
if not MAC:
self. findButton. setFocusPolicy( Qt. NoFocus)
① 我们会从 QDialog
和 Ui_FindAndReplaceDlg
继承。在 Python 编程中,我们很少需要用到多重继承,不过这里用的话会要比不用让事情变得简单得多。这样,子类FindAndReplaceDlg
就会成为它所继承的两个类的联合体,也就可以直接访问它们的各个属性,当然记得在前面加上 self
。
② 之前的设置已让初始化程序可以接受对话框处理的数据,也可以接受一个父窗口对象。对第一个继承类 QDialog
会调用 super()。
③ 这里对 setupUi()
方法的调用是之前没怎么见过的东西。这个方法由生成模块提供。调用它之后,会创建用户界面文件中给定的全部窗口部件,根据设计布局各个窗口部件,设置其属性和Tab 键次序,并设置各个连接。换句话说,会重新创建我们在 Qt 设计师中所设计的窗体。)
3、信号-槽连接:
setupUi()
方法会调用 QtCore .QMetaObject.connectSlotsByName()
,这是一个静态方法,会在窗体窗口部件的各个信号和我们那个使用了特定命名规范的子类方法之间创建一些信号槽连接。窗体中任何 on_widgetName_ signalName
形式的方法名,都会用窗口部件的信号与之相连接
比如:窗体中有个名叫 findLineEdit
的 QLineEdit
型窗口部件。由 QLineEdit
发射的其中一个信号textEdited(str)
。所以,如果打算连接这个信号,而不在初始化程序中调用connect()
方法,就可以将相应工作留给 setupUi()
。在调用这个打算让信号连接的槽的期间,使用 on_findLineEdit_textEdited
的这种方法都可以正常工作。这就是用在窗体的所有连接中的方法,除了在 Qt 设计师中通过可视化方式把 Close 按钮的 clicked()
信号进行连接之外。
@pyqtSlot ( str )
def on_findLineEdit_textEdited ( self, text) :
self. __index = 0
self. updateUi( )
完整代码(main.py)
'''
@Time :2023/8/22 15:34
@作者 :一晌小贪欢
@联系 :278865463@qq.com
'''
import re
from PyQt5. QtWidgets import *
from PyQt5. QtCore import *
from PyQt5. QtGui import *
import untitled
MAC = True
try :
from PyQt5. QtGui import qt_mac_set_native_menubar
except ImportError:
MAC = False
class FindAndReplaceDlg ( QDialog,
untitled. Ui_FindAndReplaceDlg) :
found = pyqtSignal( int )
notfound = pyqtSignal( int )
def __init__ ( self, text, parent= None ) :
super ( FindAndReplaceDlg, self) . __init__( parent)
self. __text = text
self. __index = 0
self. setupUi( self)
if not MAC:
self. findButton. setFocusPolicy( Qt. NoFocus)
@pyqtSlot ( str )
def on_findLineEdit_textEdited ( self, text) :
self. __index = 0
self. updateUi( )
def makeRegex ( self) :
findText = self. findLineEdit. text( )
if findText == '*' :
findText = '.*'
if self. syntaxComboBox. currentText( ) == "Literal" :
findText = re. escape( findText)
flags = re. MULTILINE | re. DOTALL | re. UNICODE
if not self. caseCheckBox. isChecked( ) :
flags | = re. IGNORECASE
if self. wholeCheckBox. isChecked( ) :
findText = r"\b{}\b" . format ( findText)
return re. compile ( findText, flags)
@pyqtSlot ( bool )
def on_findButton_clicked ( self) :
regex = self. makeRegex( )
match = regex. search( self. __text, self. __index)
if match is not None :
self. __index = match . end( )
self. found. emit( match . start( ) )
else :
self. notfound. emit( - 1 )
@pyqtSlot ( bool )
def on_replaceButton_clicked ( self) :
regex = self. makeRegex( )
self. __text = regex. sub( self. replaceLineEdit. text( ) ,
self. __text, 1 )
@pyqtSlot ( bool )
def on_replaceAllButton_clicked ( self) :
regex = self. makeRegex( )
self. __text = regex. sub( self. replaceLineEdit. text( ) ,
self. __text)
def updateUi ( self) :
enable = bool ( self. findLineEdit. text( ) )
self. findButton. setEnabled( enable)
self. replaceButton. setEnabled( enable)
self. replaceAllButton. setEnabled( enable)
def text ( self) :
return self. __text
if __name__ == "__main__" :
import sys
text = """US experience shows that, unlike traditional patents,
software patents do not encourage innovation and R&D, quite the
contrary. In particular they hurt small and medium-sized enterprises
and generally newcomers in the market. They will just weaken the market
and increase spending on patents and litigation, at the expense of
technological innovation and research. Especially dangerous are
attempts to abuse the patent system by preventing interoperability as a
means of avoiding competition with technological ability.
--- Extract quoted from Linus Torvalds and Alan Cox's letter
to the President of the European Parliament
http://www.effi.org/patentit/patents_torvalds_cox.html"""
def found ( where) :
print ( "Found at {}" . format ( where) )
def nomore ( ) :
print ( "No more found" )
app = QApplication( sys. argv)
form = FindAndReplaceDlg( text)
form. found. connect( found)
form. notfound. connect( nomore)
form. show( )
app. exec_( )
print ( form. text( ) )
untitled.py
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_FindAndReplaceDlg ( object ) :
def setupUi ( self, FindAndReplaceDlg) :
FindAndReplaceDlg. setObjectName( "FindAndReplaceDlg" )
FindAndReplaceDlg. resize( 424 , 180 )
self. line = QtWidgets. QFrame( FindAndReplaceDlg)
self. line. setGeometry( QtCore. QRect( 297 , 9 , 20 , 161 ) )
self. line. setFrameShape( QtWidgets. QFrame. VLine)
self. line. setFrameShadow( QtWidgets. QFrame. Sunken)
self. line. setObjectName( "line" )
self. widget = QtWidgets. QWidget( FindAndReplaceDlg)
self. widget. setGeometry( QtCore. QRect( 10 , 9 , 286 , 158 ) )
self. widget. setObjectName( "widget" )
self. verticalLayout = QtWidgets. QVBoxLayout( self. widget)
self. verticalLayout. setContentsMargins( 0 , 0 , 0 , 0 )
self. verticalLayout. setObjectName( "verticalLayout" )
self. gridLayout = QtWidgets. QGridLayout( )
self. gridLayout. setObjectName( "gridLayout" )
self. label = QtWidgets. QLabel( self. widget)
self. label. setTextFormat( QtCore. Qt. AutoText)
self. label. setObjectName( "label" )
self. gridLayout. addWidget( self. label, 0 , 0 , 1 , 1 )
self. findLineEdit = QtWidgets. QLineEdit( self. widget)
self. findLineEdit. setObjectName( "findLineEdit" )
self. gridLayout. addWidget( self. findLineEdit, 0 , 1 , 1 , 1 )
self. label_2 = QtWidgets. QLabel( self. widget)
self. label_2. setObjectName( "label_2" )
self. gridLayout. addWidget( self. label_2, 1 , 0 , 1 , 1 )
self. replaceLineEdit = QtWidgets. QLineEdit( self. widget)
self. replaceLineEdit. setObjectName( "replaceLineEdit" )
self. gridLayout. addWidget( self. replaceLineEdit, 1 , 1 , 1 , 1 )
self. verticalLayout. addLayout( self. gridLayout)
self. horizontalLayout = QtWidgets. QHBoxLayout( )
self. horizontalLayout. setObjectName( "horizontalLayout" )
self. caseCheckBox = QtWidgets. QCheckBox( self. widget)
self. caseCheckBox. setObjectName( "caseCheckBox" )
self. horizontalLayout. addWidget( self. caseCheckBox)
self. wholeCheckBox = QtWidgets. QCheckBox( self. widget)
self. wholeCheckBox. setChecked( False )
self. wholeCheckBox. setObjectName( "wholeCheckBox" )
self. horizontalLayout. addWidget( self. wholeCheckBox)
self. verticalLayout. addLayout( self. horizontalLayout)
self. horizontalLayout_2 = QtWidgets. QHBoxLayout( )
self. horizontalLayout_2. setObjectName( "horizontalLayout_2" )
self. label_3 = QtWidgets. QLabel( self. widget)
self. label_3. setObjectName( "label_3" )
self. horizontalLayout_2. addWidget( self. label_3)
self. syntaxComboBox = QtWidgets. QComboBox( self. widget)
self. syntaxComboBox. setObjectName( "syntaxComboBox" )
self. syntaxComboBox. addItem( "" )
self. syntaxComboBox. addItem( "" )
self. horizontalLayout_2. addWidget( self. syntaxComboBox)
self. verticalLayout. addLayout( self. horizontalLayout_2)
spacerItem = QtWidgets. QSpacerItem( 20 , 40 , QtWidgets. QSizePolicy. Minimum, QtWidgets. QSizePolicy. Expanding)
self. verticalLayout. addItem( spacerItem)
self. widget1 = QtWidgets. QWidget( FindAndReplaceDlg)
self. widget1. setGeometry( QtCore. QRect( 316 , 10 , 99 , 155 ) )
self. widget1. setObjectName( "widget1" )
self. verticalLayout_2 = QtWidgets. QVBoxLayout( self. widget1)
self. verticalLayout_2. setContentsMargins( 0 , 0 , 0 , 0 )
self. verticalLayout_2. setObjectName( "verticalLayout_2" )
self. findButton = QtWidgets. QPushButton( self. widget1)
self. findButton. setObjectName( "findButton" )
self. verticalLayout_2. addWidget( self. findButton)
self. replaceButton = QtWidgets. QPushButton( self. widget1)
self. replaceButton. setObjectName( "replaceButton" )
self. verticalLayout_2. addWidget( self. replaceButton)
self. replaceAllButton = QtWidgets. QPushButton( self. widget1)
self. replaceAllButton. setObjectName( "replaceAllButton" )
self. verticalLayout_2. addWidget( self. replaceAllButton)
spacerItem1 = QtWidgets. QSpacerItem( 20 , 13 , QtWidgets. QSizePolicy. Minimum, QtWidgets. QSizePolicy. Fixed)
self. verticalLayout_2. addItem( spacerItem1)
self. closeButton = QtWidgets. QPushButton( self. widget1)
self. closeButton. setObjectName( "closeButton" )
self. verticalLayout_2. addWidget( self. closeButton)
self. label. setBuddy( self. findLineEdit)
self. label_2. setBuddy( self. replaceLineEdit)
self. label_3. setBuddy( self. syntaxComboBox)
self. retranslateUi( FindAndReplaceDlg)
self. closeButton. clicked. connect( FindAndReplaceDlg. reject)
QtCore. QMetaObject. connectSlotsByName( FindAndReplaceDlg)
def retranslateUi ( self, FindAndReplaceDlg) :
_translate = QtCore. QCoreApplication. translate
FindAndReplaceDlg. setWindowTitle( _translate( "FindAndReplaceDlg" , "Find and Replace" ) )
self. label. setText( _translate( "FindAndReplaceDlg" , "Find &what:" ) )
self. label_2. setText( _translate( "FindAndReplaceDlg" , "Replace with:" ) )
self. caseCheckBox. setText( _translate( "FindAndReplaceDlg" , "&Case sensitive" ) )
self. wholeCheckBox. setText( _translate( "FindAndReplaceDlg" , "Wh&ole words" ) )
self. label_3. setText( _translate( "FindAndReplaceDlg" , "&Syntax:" ) )
self. syntaxComboBox. setItemText( 0 , _translate( "FindAndReplaceDlg" , "Literal text" ) )
self. syntaxComboBox. setItemText( 1 , _translate( "FindAndReplaceDlg" , "Regular expression" ) )
self. findButton. setText( _translate( "FindAndReplaceDlg" , "&Find" ) )
self. replaceButton. setText( _translate( "FindAndReplaceDlg" , "&Replace" ) )
self. replaceAllButton. setText( _translate( "FindAndReplaceDlg" , "Replace &All" ) )
self. closeButton. setText( _translate( "FindAndReplaceDlg" , "Close" ) )
if __name__ == '__main__' :
app = QtWidgets. QApplication( sys. argv)
mainWindow = QtWidgets. QDialog( )
ui = Ui_FindAndReplaceDlg( )
ui. setupUi( mainWindow)
mainWindow. show( )
sys. exit( app. exec_( ) )
untitled.ui
<?xml version="1.0" encoding="UTF-8"?>
< ui version = " 4.0" >
< class> FindAndReplaceDlg</ class>
< widget class = " QDialog" name = " FindAndReplaceDlg" >
< property name = " geometry" >
< rect>
< x> 0</ x>
< y> 0</ y>
< width> 400</ width>
< height> 300</ height>
</ rect>
</ property>
< property name = " windowTitle" >
< string> Dialog</ string>
</ property>
< widget class = " Line" name = " line" >
< property name = " geometry" >
< rect>
< x> 270</ x>
< y> 60</ y>
< width> 3</ width>
< height> 61</ height>
</ rect>
</ property>
< property name = " orientation" >
< enum> Qt::Vertical</ enum>
</ property>
</ widget>
< widget class = " QWidget" name = " layoutWidget" >
< property name = " geometry" >
< rect>
< x> 20</ x>
< y> 30</ y>
< width> 231</ width>
< height> 48</ height>
</ rect>
</ property>
< layout class = " QGridLayout" name = " gridLayout" >
< item row = " 0" column = " 0" >
< widget class = " QLabel" name = " label" >
< property name = " text" >
< string> Find & What:</ string>
</ property>
< property name = " buddy" >
< cstring> findLineEidt</ cstring>
</ property>
</ widget>
</ item>
< item row = " 0" column = " 1" >
< widget class = " QLineEdit" name = " findLineEidt" >
< property name = " inputMask" >
< string/>
</ property>
</ widget>
</ item>
< item row = " 1" column = " 0" >
< widget class = " QLabel" name = " label_2" >
< property name = " text" >
< string> Replace w& ith: </ string>
</ property>
< property name = " buddy" >
< cstring> replaceLineEidt</ cstring>
</ property>
</ widget>
</ item>
< item row = " 1" column = " 1" >
< widget class = " QLineEdit" name = " replaceLineEidt" >
< property name = " inputMask" >
< string/>
</ property>
</ widget>
</ item>
</ layout>
</ widget>
< widget class = " QWidget" name = " layoutWidget" >
< property name = " geometry" >
< rect>
< x> 20</ x>
< y> 110</ y>
< width> 204</ width>
< height> 40</ height>
</ rect>
</ property>
< layout class = " QGridLayout" name = " gridLayout_2" >
< item row = " 0" column = " 1" >
< widget class = " QCheckBox" name = " caseCheckBox_2" >
< property name = " text" >
< string> Wh& ole words</ string>
</ property>
</ widget>
</ item>
< item row = " 0" column = " 0" >
< widget class = " QCheckBox" name = " caseCheckBox" >
< property name = " text" >
< string> & Case sensitive</ string>
</ property>
</ widget>
</ item>
</ layout>
</ widget>
< widget class = " QWidget" name = " layoutWidget" >
< property name = " geometry" >
< rect>
< x> 20</ x>
< y> 150</ y>
< width> 191</ width>
< height> 40</ height>
</ rect>
</ property>
< layout class = " QGridLayout" name = " gridLayout_3" >
< item row = " 0" column = " 0" >
< widget class = " QLabel" name = " label_3" >
< property name = " text" >
< string> & Syntax:</ string>
</ property>
< property name = " buddy" >
< cstring> syntaxComboBox</ cstring>
</ property>
</ widget>
</ item>
< item row = " 0" column = " 1" >
< widget class = " QComboBox" name = " syntaxComboBox" >
< item>
< property name = " text" >
< string> Literal text</ string>
</ property>
</ item>
< item>
< property name = " text" >
< string> Regular expression</ string>
</ property>
</ item>
</ widget>
</ item>
</ layout>
</ widget>
< widget class = " QWidget" name = " layoutWidget" >
< property name = " geometry" >
< rect>
< x> 280</ x>
< y> 20</ y>
< width> 77</ width>
< height> 158</ height>
</ rect>
</ property>
< layout class = " QGridLayout" name = " gridLayout_4" >
< item row = " 2" column = " 0" >
< widget class = " QPushButton" name = " replaceAllButton" >
< property name = " text" >
< string> Replace & All</ string>
</ property>
</ widget>
</ item>
< item row = " 3" column = " 0" >
< spacer name = " verticalSpacer_2" >
< property name = " orientation" >
< enum> Qt::Vertical</ enum>
</ property>
< property name = " sizeHint" stdset = " 0" >
< size>
< width> 20</ width>
< height> 40</ height>
</ size>
</ property>
</ spacer>
</ item>
< item row = " 1" column = " 0" >
< widget class = " QPushButton" name = " replaceButton" >
< property name = " text" >
< string> & Replace</ string>
</ property>
</ widget>
</ item>
< item row = " 0" column = " 0" >
< widget class = " QPushButton" name = " findButton" >
< property name = " text" >
< string> & Find</ string>
</ property>
</ widget>
</ item>
< item row = " 4" column = " 0" >
< widget class = " QPushButton" name = " closeButton" >
< property name = " text" >
< string> Close</ string>
</ property>
</ widget>
</ item>
</ layout>
</ widget>
</ widget>
< resources/>
< connections>
< connection>
< sender> closeButton</ sender>
< signal> clicked()</ signal>
< receiver> FindAndReplaceDlg</ receiver>
< slot> reject()</ slot>
< hints>
< hint type = " sourcelabel" >
< x> 317</ x>
< y> 165</ y>
</ hint>
< hint type = " destinationlabel" >
< x> 152</ x>
< y> 216</ y>
</ hint>
</ hints>
</ connection>
</ connections>
</ ui>
这是我们今天学习PyQty5的第 5 课,接下来我也会认真学习
希望对大家有帮助
致力于办公自动化的小小程序员一枚#
都看到这了,关注+点赞+收藏=不迷路!!
如果你想知道更多关于Python办公自动化的知识各位大佬给个关注吧!