Bard is coming along

David Cortesi davecortesi at gmail.com
Wed May 3 20:29:01 BST 2023


On further conversation with Bard about this code I got it to add the
following, to make the search dialog visible:

        # Connect the shortcut
>         self.keyPressEvent = self.on_key_press
>
>     def on_key_press(self, event):
>         if event.modifiers() & QtCore.Qt.ControlModifier and event.key() == QtCore.Qt.Key_F:
>             self.search_replace_dialog.show()
>             return True
>         else:
>             return super().keyPressEvent(event)
>
>
>
On Wed, May 3, 2023 at 12:15 PM David Cortesi <davecortesi at gmail.com> wrote:

> I got my invite to try Google Bard, and after asking it some general
> questions in other areas I tried its skill at writing PyQt code. Here is
> one question and its response. The first two lines of the prompt were
> suggested earlier when I was asking it about code prompts in general.
>
> python=3.10
>> qt=6.5
>> Write a Python subclass of QPlainTextEdit that includes methods for
>> implementing search and replace
>>
> Sure, here is a Python subclass of QPlainTextEdit that includes methods
>> for implementing search and replace:
>> Python
>>
>> import sysfrom PyQt6.QtWidgets import QPlainTextEdit
>> class SearchReplacePlainTextEdit(QPlainTextEdit):
>>     def __init__(self):
>>         super().__init__()
>>
>>         # Create the search and replace dialog
>>         self.search_replace_dialog = QDialog()
>>         self.search_replace_line_edit = QLineEdit()
>>         self.replace_line_edit = QLineEdit()
>>         self.case_sensitive_checkbox = QCheckBox("Case sensitive")
>>         self.whole_words_checkbox = QCheckBox("Whole words")
>>         self.search_button = QPushButton("Search")
>>         self.replace_button = QPushButton("Replace")
>>         self.replace_all_button = QPushButton("Replace all")
>>
>>         # Layout the dialog
>>         layout = QVBoxLayout()
>>         layout.addWidget(self.search_replace_line_edit)
>>         layout.addWidget(self.replace_line_edit)
>>         layout.addWidget(self.case_sensitive_checkbox)
>>         layout.addWidget(self.whole_words_checkbox)
>>         layout.addWidget(self.search_button)
>>         layout.addWidget(self.replace_button)
>>         layout.addWidget(self.replace_all_button)
>>         self.search_replace_dialog.setLayout(layout)
>>
>>         # Connect the buttons
>>         self.search_button.clicked.connect(self.on_search)
>>         self.replace_button.clicked.connect(self.on_replace)
>>         self.replace_all_button.clicked.connect(self.on_replace_all)
>>
>>     def on_search(self):
>>         # Get the search text
>>         search_text = self.search_replace_line_edit.text()
>>
>>         # Get the replace text
>>         replace_text = self.replace_line_edit.text()
>>
>>         # Set the search flags
>>         search_flags = QTextDocument.FindFlag.NoHighlight
>>         if self.case_sensitive_checkbox.isChecked():
>>             search_flags |= QTextDocument.FindFlag.CaseSensitive
>>         if self.whole_words_checkbox.isChecked():
>>             search_flags |= QTextDocument.FindFlag.WholeWords
>>
>>         # Find the text
>>         self.find(search_text, search_flags)
>>
>>     def on_replace(self):
>>         # Get the search text
>>         search_text = self.search_replace_line_edit.text()
>>
>>         # Get the replace text
>>         replace_text = self.replace_line_edit.text()
>>
>>         # Replace the text
>>         self.replace(search_text, replace_text)
>>
>>     def on_replace_all(self):
>>         # Get the search text
>>         search_text = self.search_replace_line_edit.text()
>>
>>         # Get the replace text
>>         replace_text = self.replace_line_edit.text()
>>
>>         # Replace all instances of the search text with the replace text
>>         self.replaceAll(search_text, replace_text)
>>
>>
>> Use code with caution. Learn more <https://bard.google.com/faq#coding>
>>
>> This code creates a subclass of QPlainTextEdit that includes methods for
>> implementing search and replace. The search and replace dialog has the
>> following features:
>>
>>    - A search text box
>>    - A replace text box
>>    - A case sensitive checkbox
>>    - A whole words checkbox
>>    - A search button
>>    - A replace button
>>    - A replace all button
>>
>> When the user clicks the search button, the text in the search text box
>> is searched for in the text editor. If the text is found, the cursor is
>> moved to the found text. When the user clicks the replace button, the text
>> in the replace text box is substituted for the found text. When the user
>> clicks the replace all button, all instances of the search text are
>> replaced with the replace text.
>>
>> I hope this is what you are looking for. Let me know if you have any
>> other questions.
>>
> It looks good but when I run it only the edit widget is visible. Not sure
> how it messed up the layout so the buttons etc. do not show.
>
> Still, Bard gives a decent starting point.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20230503/5b9c85c3/attachment-0001.htm>


More information about the PyQt mailing list