Hướng dẫn ipywidgets in python - ipywidget trong python

Hàm

interact(f, x='Hi there!');
9 (
@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
0) tự động tạo các điều khiển giao diện người dùng (UI) để khám phá mã và dữ liệu tương tác. Đó là cách dễ nhất để bắt đầu sử dụng các tiện ích Ipython.

# Imports for JupyterLite
try:
    import piplite
    await piplite.install(['ipywidgets'])
except ImportError:
    pass

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets

Cơ bản ________ 29

Ở cấp độ cơ bản nhất,

interact(f, x='Hi there!');
9 tự động điều khiển UI cho các đối số chức năng và sau đó gọi hàm với các đối số đó khi bạn thao tác các điều khiển một cách tương tác. Để sử dụng
interact(f, x='Hi there!');
9, bạn cần xác định một chức năng mà bạn muốn khám phá. Dưới đây là một hàm trả về đối số duy nhất của nó
@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
4.

Khi bạn chuyển chức năng này dưới dạng đối số đầu tiên cho

interact(f, x='Hi there!');
9 cùng với đối số từ khóa số nguyên (
@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
6), một thanh trượt được tạo và liên kết với tham số hàm.

Khi bạn di chuyển thanh trượt, hàm được gọi và giá trị trả về của nó được in.

Nếu bạn vượt qua

@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
7 hoặc
@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
8,
interact(f, x='Hi there!');
9 sẽ tạo hộp kiểm:

Nếu bạn vượt qua một chuỗi,

interact(f, x='Hi there!');
9 sẽ tạo một hộp văn bản.

interact(f, x='Hi there!');

interact(f, x='Hi there!');
9 cũng có thể được sử dụng như một người trang trí. Điều này cho phép bạn xác định một chức năng và tương tác với nó trong một lần chụp. Như ví dụ này cho thấy,
interact(f, x='Hi there!');
9 cũng hoạt động với các chức năng có nhiều đối số.

@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)

Khắc phục đối số bằng cách sử dụng ________ 43

Có những lúc bạn có thể muốn khám phá một hàm bằng cách sử dụng

interact(f, x='Hi there!');
9, nhưng sửa một hoặc nhiều đối số của nó với các giá trị cụ thể. Điều này có thể được thực hiện bằng cách gói các giá trị với hàm
def h(p, q):
    return (p, q)
3.

def h(p, q):
    return (p, q)

Khi chúng tôi gọi

interact(f, x='Hi there!');
9, chúng tôi vượt qua
def h(p, q):
    return (p, q)
7 cho Q để giữ nó cố định ở giá trị
def h(p, q):
    return (p, q)
8.

interact(h, p=5, q=fixed(20));

Lưu ý rằng một thanh trượt chỉ được sản xuất cho

def h(p, q):
    return (p, q)
9 vì giá trị của
interact(h, p=5, q=fixed(20));
0 là cố định.

Chữ viết tắt Widget

Khi bạn chuyển một đối số từ khóa có giá trị nguyên của

interact(h, p=5, q=fixed(20));
1 (
@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
6) cho
interact(f, x='Hi there!');
9, nó sẽ tạo ra một điều khiển thanh trượt có giá trị số nguyên với phạm vi
interact(h, p=5, q=fixed(20));
4. Trong trường hợp này,
interact(h, p=5, q=fixed(20));
1 là viết tắt cho một tiện ích trượt thực tế:

IntSlider(min=-10, max=30, step=1, value=10)

Trên thực tế, chúng ta có thể nhận được kết quả tương tự nếu chúng ta vượt qua

interact(h, p=5, q=fixed(20));
6 này làm đối số từ khóa cho
@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
4:

interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));

Bảng sau đây đưa ra một cái nhìn tổng quan về các loại đối số khác nhau và cách chúng ánh xạ tới các điều khiển tương tác:

Từ khóa đối số

Widget

@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
7 hoặc
@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
8

Hộp kiểm

IntSlider(min=-10, max=30, step=1, value=10)
0

Chữ

IntSlider(min=-10, max=30, step=1, value=10)
1 hoặc
IntSlider(min=-10, max=30, step=1, value=10)
2 hoặc
IntSlider(min=-10, max=30, step=1, value=10)
3 nếu số nguyên được truyền

Intslider

IntSlider(min=-10, max=30, step=1, value=10)
1 hoặc
IntSlider(min=-10, max=30, step=1, value=10)
2 hoặc
IntSlider(min=-10, max=30, step=1, value=10)
3 nếu phao được thông qua

Floatslider

IntSlider(min=-10, max=30, step=1, value=10)
7 hoặc `[(’ một, 1), (‘hai, 2)]]

Thả xuống

Lưu ý rằng việc thả xuống được sử dụng nếu một danh sách hoặc danh sách các bộ dữ liệu được đưa ra (biểu thị các lựa chọn riêng biệt) và một thanh trượt được sử dụng nếu một tuple được đưa ra (biểu thị một phạm vi).

Bạn đã thấy làm thế nào các hộp kiểm và tiện ích văn bản hoạt động ở trên. Ở đây, nhiều chi tiết hơn về các chữ viết tắt khác nhau cho các thanh trượt và thả xuống được đưa ra.

Nếu một số nguyên 2 được truyền

IntSlider(min=-10, max=30, step=1, value=10)
8, một thanh trượt có giá trị số nguyên được tạo ra với các giá trị tối thiểu và tối đa đó (toàn diện). Trong trường hợp này, kích thước bước mặc định của
IntSlider(min=-10, max=30, step=1, value=10)
9 được sử dụng.

Nếu một số nguyên được thông qua

IntSlider(min=-10, max=30, step=1, value=10)
3, kích thước bước cũng có thể được đặt.

Một thanh trượt có giá trị nổi được tạo ra nếu bất kỳ phần tử nào của bộ dữ liệu là phao. Ở đây mức tối thiểu là

interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
1, tối đa là
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
2 và kích thước bước là
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
3 (mặc định).

interact(f, x=(0.0,10.0));

Kích thước bước có thể được thay đổi bằng cách truyền một phần tử thứ ba trong bộ tuple.

interact(f, x=(0.0,10.0,0.01));

Đối với cả thanh trượt có giá trị số nguyên và float, bạn có thể chọn giá trị ban đầu của tiện ích bằng cách chuyển đối số từ khóa mặc định cho hàm Python bên dưới. Ở đây chúng tôi đặt giá trị ban đầu của thanh trượt nổi thành

interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
4.

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
0

Các menu thả xuống được xây dựng bằng cách truyền một danh sách các chuỗi. Trong trường hợp này, cả hai chuỗi đều được sử dụng làm tên trong UI menu thả xuống và được truyền cho hàm Python bên dưới.

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
1

Nếu bạn muốn một menu thả xuống chuyển các giá trị không chuỗi cho hàm Python, bạn có thể vượt qua danh sách các cặp

interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
5. Các mục đầu tiên là các tên trong UI menu thả xuống và các mục thứ hai là các giá trị là các đối số được truyền đến hàm Python bên dưới.

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
2

Cuối cùng, nếu bạn cần kiểm soát chi tiết hơn so với việc viết tắt, bạn có thể vượt qua một ví dụ

interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
6 làm đối số. A
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
6 là một tiện ích nhằm mục đích kiểm soát một giá trị duy nhất. Hầu hết các tiện ích đi kèm với ipywidgets kế thừa từ
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
6. Để biết thêm thông tin, hãy xem phần này về các loại widget.bundled with ipywidgets inherit from
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
6. For more information, see this section on widget types.

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
3

________ 79

Ngoài

interact(f, x='Hi there!');
9, Ipython cung cấp một chức năng khác,
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
9, rất hữu ích khi bạn muốn sử dụng lại các tiện ích được tạo hoặc truy cập dữ liệu liên kết với các điều khiển UI.

Lưu ý rằng không giống như

interact(f, x='Hi there!');
9, giá trị trả về của hàm sẽ không được hiển thị tự động, nhưng bạn có thể hiển thị một giá trị bên trong hàm với
interact(f, x=(0.0,10.0));
3.

Dưới đây là một hàm hiển thị tổng của hai đối số của nó và trả về tổng. Dòng

interact(f, x=(0.0,10.0));
4 có thể bị bỏ qua nếu bạn không muốn hiển thị kết quả của chức năng.

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
4

Không giống như

interact(f, x='Hi there!');
9,
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
9 trả về một ví dụ
interact(f, x=(0.0,10.0));
7 thay vì hiển thị ngay lập tức tiện ích.

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
5

Tiện ích này là

interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
9, một lớp con của
interact(f, x=(0.0,10.0));
9, là một thùng chứa cho các tiện ích khác.

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
6

Trẻ em của

interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
9 là hai thanh trượt có giá trị nguyên và tiện ích đầu ra, được sản xuất bởi các chữ viết tắt của Widget ở trên.

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
7

Để thực sự hiển thị các widget, bạn có thể sử dụng chức năng Ipython từ ____84.

Tại thời điểm này, các điều khiển giao diện người dùng hoạt động giống như chúng nếu

interact(f, x='Hi there!');
9 đã được sử dụng. Bạn có thể điều khiển chúng tương tác và chức năng sẽ được gọi. Tuy nhiên, phiên bản widget được trả về bởi
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
9 cũng cho phép bạn truy cập vào các đối số từ khóa hiện tại và giá trị trả về của hàm Python cơ bản.

Dưới đây là các đối số từ khóa hiện tại. Nếu bạn chạy lại ô này sau khi thao tác các thanh trượt, các giá trị sẽ thay đổi.

Dưới đây là giá trị trả về hiện tại của hàm.

Vô hiệu hóa cập nhật liên tục

Khi tương tác với các chức năng chạy dài, phản hồi thời gian thực là một gánh nặng thay vì hữu ích. Xem ví dụ sau:

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
8

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
9

interact(f, x='Hi there!');
0

Lưu ý rằng đầu ra được cập nhật ngay cả trong khi kéo chuột lên thanh trượt. Điều này không hữu ích cho các chức năng chạy dài do độ trễ:

interact(f, x='Hi there!');
1

Có hai cách để giảm thiểu điều này. Bạn chỉ có thể thực thi theo yêu cầu hoặc hạn chế thực thi các sự kiện phát hành chuột.

________ 94

Hàm

interact(f, x=(0.0,10.0,0.01));
4 cung cấp một biến thể tương tác cho phép bạn hạn chế thực thi để nó chỉ được thực hiện theo yêu cầu. Một nút được thêm vào các điều khiển tương tác cho phép bạn kích hoạt sự kiện thực thi.

interact(f, x='Hi there!');
2

Bạn có thể làm điều tương tự với

interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
9 bằng cách sử dụng
interact(f, x=(0.0,10.0,0.01));
7 làm đối số thứ hai, như được hiển thị bên dưới.

interact(f, x='Hi there!');
3

________ 98

Nếu bạn đang sử dụng các tiện ích trượt, bạn có thể đặt

interact(f, x=(0.0,10.0,0.01));
8 kwarg thành
@interact(x=True, y=1.0)
def g(x, y):
    return (x, y)
8.
interact(f, x=(0.0,10.0,0.01));
8 là một kwarg của các vật dụng trượt, hạn chế thực thi các sự kiện phát hành chuột.

interact(f, x='Hi there!');
4

Kiểm soát thêm giao diện người dùng: ________ 102

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
02 cung cấp tính linh hoạt bổ sung: Bạn có thể kiểm soát cách các thành phần UI được đặt ra.

Không giống như

interact(f, x='Hi there!');
9,
interact(f, x=widgets.IntSlider(min=-10, max=30, step=1, value=10));
9 và
interact(f, x=(0.0,10.0,0.01));
4,
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
02 không tạo giao diện người dùng cho các tiện ích. Điều này rất mạnh mẽ, bởi vì nó có nghĩa là bạn có thể tạo một tiện ích, đặt nó vào một hộp, sau đó chuyển tiện ích cho
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
02 và có quyền kiểm soát tiện ích và bố cục của nó.

interact(f, x='Hi there!');
5

Lập luận phụ thuộc vào nhau 

Các đối số phụ thuộc vào nhau có thể được thể hiện bằng tay bằng cách sử dụng

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
09. Xem ví dụ sau, trong đó một biến được sử dụng để mô tả giới hạn của một biến khác. Để biết thêm thông tin, vui lòng xem Notebook ví dụ về sự kiện Widget.widget events example notebook.

interact(f, x='Hi there!');
6

Đầu ra nhấp nháy và nhảy

Thỉnh thoảng, bạn có thể nhận thấy sự nhấp nháy đầu ra và nhảy đầu ra tương tác, khiến vị trí cuộn máy tính xách tay thay đổi khi đầu ra được cập nhật. Điều khiển tương tác có bố cục, vì vậy chúng ta có thể đặt chiều cao của nó thành một giá trị phù hợp (hiện được chọn bằng tay) để nó không thay đổi kích thước khi nó được cập nhật.

interact(f, x='Hi there!');
7

Tương tác với nhiều chức năng

Bạn có thể muốn có một tiện ích duy nhất tương tác với nhiều chức năng. Điều này là có thể bằng cách liên kết các tiện ích với cả hai hàm bằng hàm Interactive_output (). Thứ tự thực hiện các chức năng sẽ là thứ tự chúng được liên kết với tiện ích.

interact(f, x='Hi there!');
8