PyQt5+python3的FindDialog

 1 import sys

 2 from PyQt5.QtWidgets import *

 3 from PyQt5.QtCore import Qt, pyqtSignal

 4 

 5 class FindDialog(QDialog):

 6     findNext = pyqtSignal(str, Qt.CaseSensitivity)

 7     findPrevious = pyqtSignal(str, Qt.CaseSensitivity)

 8 

 9     def __init__(self, parent = None):

10         super().__init__(parent)

11         self.label = QLabel(self.tr("Find &what:"))

12         self.lineEdit = QLineEdit()

13         self.label.setBuddy(self.lineEdit)

14 

15         self.caseCheckBox = QCheckBox(self.tr("Match &case"))

16         self.backwardCheckBox = QCheckBox(self.tr("Search &backward"))

17 

18         self.findButton = QPushButton(self.tr("&Find"))

19         self.findButton.setDefault(True)

20         self.findButton.setEnabled(False)

21 

22         self.closeButton = QPushButton(self.tr("Close"))

23         self.lineEdit.textChanged.connect(self.enableFindButton)

24         self.findButton.clicked.connect(self.findClicked)

25         self.closeButton.clicked.connect(self.close)

26 

27         self.topLeftLayout = QHBoxLayout()

28         self.topLeftLayout.addWidget(self.label)

29         self.topLeftLayout.addWidget(self.lineEdit)

30 

31         self.leftLayout = QVBoxLayout()

32         self.leftLayout.addLayout(self.topLeftLayout)

33         self.leftLayout.addWidget(self.caseCheckBox)

34         self.leftLayout.addWidget(self.backwardCheckBox)

35 

36         self.rightLayout = QVBoxLayout()

37         self.rightLayout.addWidget(self.findButton)

38         self.rightLayout.addWidget(self.closeButton)

39         self.rightLayout.addStretch()

40 

41         self.mainLayout = QHBoxLayout()

42         self.mainLayout.addLayout(self.leftLayout)

43         self.mainLayout.addLayout(self.rightLayout)

44         self.setLayout(self.mainLayout)

45         self.setWindowTitle(self.tr("Find"))

46         self.setFixedHeight(self.sizeHint().height())

47 

48     def findClicked(self):

49         text = self.lineEdit.text()

50         cs = (Qt.CaseSensitive if self.caseCheckBox.isChecked()

51               else Qt.CaseInsensitive)

52 

53         if self.backwardCheckBox.isChecked():

54             self.findPrevious.emit(text, cs)

55         else:

56             self.findNext.emit(text, cs)

57 

58     def enableFindButton(self, text):

59         self.findButton.setEnabled(not text == '')

60 

61 if __name__ == '__main__':

62     app = QApplication(sys.argv)

63     dialog = FindDialog()

64     dialog.show()

65     sys.exit(app.exec())

 

你可能感兴趣的:(python3)