mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Fix query_one docs mistake, and note that query_one searches under the widget it is called on
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# DOM Queries
|
# DOM Queries
|
||||||
|
|
||||||
In the previous chapter we introduced the [DOM](../guide/CSS.md#the-dom) which is how Textual apps keep track of widgets. We saw how you can apply styles to the DOM with CSS [selectors](./CSS.md#selectors).
|
In the [CSS chapter](./CSS.md) we introduced the [DOM](../guide/CSS.md#the-dom) which is how Textual apps keep track of widgets. We saw how you can apply styles to the DOM with CSS [selectors](./CSS.md#selectors).
|
||||||
|
|
||||||
Selectors are a very useful idea and can do more than apply styles. We can also find widgets in Python code with selectors, and make updates to widgets in a simple expressive way. Let's look at how!
|
Selectors are a very useful idea and can do more than apply styles. We can also find widgets in Python code with selectors, and make updates to widgets in a simple expressive way. Let's look at how!
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ We could do this with the following line of code:
|
|||||||
send_button = self.query_one("#send")
|
send_button = self.query_one("#send")
|
||||||
```
|
```
|
||||||
|
|
||||||
This will retrieve a widget with an ID of `send`, if there is exactly one.
|
This will retrieve the first widget discovered with an ID of `send`.
|
||||||
If there are no matching widgets, Textual will raise a [NoMatches][textual.css.query.NoMatches] exception.
|
If there are no matching widgets, Textual will raise a [NoMatches][textual.css.query.NoMatches] exception.
|
||||||
|
|
||||||
You can also add a second parameter for the expected type, which will ensure that you get the type you are expecting.
|
You can also add a second parameter for the expected type, which will ensure that you get the type you are expecting.
|
||||||
@@ -41,6 +41,15 @@ For instance, the following would return a `Button` instance (assuming there is
|
|||||||
my_button = self.query_one(Button)
|
my_button = self.query_one(Button)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`query_one` searches *below* the widget it is called on, so if you call `query_one` on a widget, it will only find widgets that are descendants of that widget.
|
||||||
|
|
||||||
|
If you wish to search the entire DOM, you should call `query_one` on the `App` or `Screen` instance.
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Search the entire Screen for a widget with an ID of "send-email"
|
||||||
|
self.screen.query_one("#send-email")
|
||||||
|
```
|
||||||
|
|
||||||
## Making queries
|
## Making queries
|
||||||
|
|
||||||
Apps and widgets also have a [query][textual.dom.DOMNode.query] method which finds (or queries) widgets. This method returns a [DOMQuery][textual.css.query.DOMQuery] object which is a list-like container of widgets.
|
Apps and widgets also have a [query][textual.dom.DOMNode.query] method which finds (or queries) widgets. This method returns a [DOMQuery][textual.css.query.DOMQuery] object which is a list-like container of widgets.
|
||||||
|
|||||||
Reference in New Issue
Block a user