IDLE --- Trình soạn thảo và shell Python

Source code: Lib/idlelib/


IDLE là Môi trường học tập và phát triển tích hợp của Python.

IDLE có các tính năng sau:

  • đa nền tảng: hoạt động gần như giống nhau trên Windows, Unix và macOS

  • Cửa sổ shell Python (trình thông dịch tương tác) với màu sắc của thông báo đầu vào, đầu ra và lỗi mã

  • trình soạn thảo văn bản nhiều cửa sổ với nhiều thao tác hoàn tác, tô màu Python, thụt lề thông minh, mẹo gọi, tự động hoàn thành và các tính năng khác

  • tìm kiếm trong bất kỳ cửa sổ nào, thay thế trong cửa sổ soạn thảo và tìm kiếm trong nhiều tệp (grep)

  • trình gỡ lỗi với các điểm dừng liên tục, bước và xem các không gian tên chung và cục bộ

  • cấu hình, trình duyệt và các hộp thoại khác

Ứng dụng IDLE được triển khai trong gói idlelib.

Đây là một optional module. Nếu nó bị thiếu trong bản sao CPython của bạn, hãy tìm tài liệu từ nhà phân phối của bạn (nghĩa là bất kỳ ai đã cung cấp Python cho bạn). Nếu bạn là nhà phân phối, hãy xem Yêu cầu đối với các mô-đun tùy chọn.

Chỉnh sửa và điều hướng

Cửa sổ soạn thảo

IDLE có thể mở cửa sổ soạn thảo khi khởi động, tùy thuộc vào cài đặt và cách bạn khởi động IDLE. Sau đó, sử dụng menu Tệp. Chỉ có thể có một cửa sổ soạn thảo đang mở cho một tệp nhất định.

Thanh tiêu đề chứa tên tệp, đường dẫn đầy đủ và phiên bản Python và IDLE đang chạy cửa sổ. Thanh trạng thái chứa số dòng ('Ln') và số cột ('Col'). Số dòng bắt đầu bằng 1; số cột bằng 0.

IDLE giả định rằng các tệp có phần mở rộng .py* đã biết chứa mã Python còn các tệp khác thì không. Chạy mã Python bằng menu Run.

Ràng buộc chính

Con trỏ chèn IDLE là một thanh dọc mỏng giữa các vị trí ký tự. Khi nhập các ký tự, con trỏ chèn và mọi thứ ở bên phải của nó sẽ di chuyển sang phải một ký tự và ký tự mới được nhập vào khoảng trống mới.

Một số phím không phải ký tự sẽ di chuyển con trỏ và có thể xóa các ký tự. Việc xóa không đưa văn bản vào bảng nhớ tạm nhưng IDLE có danh sách hoàn tác. Bất cứ nơi nào tài liệu này thảo luận về các khóa, 'C' đều đề cập đến khóa Control trên Windows và Unix và khóa Command trên macOS. (Và tất cả các cuộc thảo luận như vậy đều cho rằng các khóa chưa được liên kết lại với thứ khác.)

  • Phím mũi tên di chuyển con trỏ một ký tự hoặc dòng.

  • C-LeftArrowC-RightArrow di chuyển sang trái hoặc sang phải một từ.

  • HomeEnd đi về đầu hoặc cuối dòng.

  • Page UpPage Down lên hoặc xuống một màn hình.

  • C-HomeC-End đi đến đầu hoặc cuối tập tin.

  • BackspaceDel (hoặc C-d) xóa ký tự trước hoặc tiếp theo.

  • C-BackspaceC-Del xóa một từ sang trái hoặc phải.

  • C-k xóa ('giết') mọi thứ ở bên phải.

Các tổ hợp phím tiêu chuẩn (như C-c để sao chép và C-v để dán) có thể hoạt động. Các tổ hợp phím được chọn trong hộp thoại Cấu hình IDLE.

Thụt lề tự động

Sau câu lệnh mở khối, dòng tiếp theo được thụt vào 4 dấu cách (trong cửa sổ Python Shell bằng một tab). Sau một số từ khóa nhất định (break, return, v.v.), dòng tiếp theo sẽ bị thụt lề. Trong thụt lề đầu dòng, Backspace xóa tối đa 4 khoảng trắng nếu chúng ở đó. Tab chèn khoảng trắng (trong một tab của cửa sổ Python Shell), số lượng phụ thuộc vào độ rộng thụt lề. Hiện tại, các tab bị giới hạn ở bốn khoảng trắng do giới hạn Tcl/Tk.

Xem thêm các lệnh vùng thụt lề/thụt lề trên Format menu.

Tìm kiếm và thay thế

Bất kỳ lựa chọn nào cũng trở thành mục tiêu tìm kiếm. Tuy nhiên, chỉ các lựa chọn trong một dòng mới hoạt động vì tìm kiếm chỉ được thực hiện trong các dòng đã loại bỏ dòng mới ở cuối. Nếu [x] Regular expression được chọn, mục tiêu sẽ được diễn giải theo mô-đun re của Python.

Hoàn thành

Các phần hoàn thiện được cung cấp, khi được yêu cầu và có sẵn, đối với tên mô-đun, thuộc tính của lớp hoặc hàm hoặc tên tệp. Mỗi phương thức yêu cầu hiển thị một hộp hoàn thành với các tên hiện có. (Xem phần hoàn thành tab bên dưới để biết ngoại lệ.) Đối với bất kỳ hộp nào, hãy thay đổi tên đang được hoàn thành và mục được đánh dấu trong hộp bằng cách nhập và xóa các ký tự; bằng cách nhấn các phím Up, Down, PageUp, PageDown, HomeEnd; và chỉ bằng một cú nhấp chuột trong hộp. Đóng hộp bằng phím Escape, Enter và double Tab hoặc nhấp chuột bên ngoài hộp. Nhấp đúp vào hộp sẽ chọn và đóng.

Một cách để mở hộp là nhập một ký tự khóa và đợi một khoảng thời gian được xác định trước. Giá trị mặc định này là 2 giây; tùy chỉnh nó trong hộp thoại cài đặt. (Để ngăn cửa sổ bật lên tự động, hãy đặt độ trễ thành số lượng lớn mili giây, chẳng hạn như 100000000.) Đối với tên mô-đun hoặc thuộc tính lớp hoặc hàm đã nhập, hãy nhập '.'. Đối với tên tệp trong thư mục gốc, hãy nhập os.sep hoặc os.altsep ngay sau dấu ngoặc kép mở đầu. (Trên Windows, trước tiên người ta có thể chỉ định ổ đĩa.) Di chuyển vào các thư mục con bằng cách nhập tên thư mục và dấu phân cách.

Thay vì chờ đợi hoặc sau khi đóng hộp, hãy mở hộp hoàn thành ngay lập tức bằng Hiển thị phần hoàn thành trên menu Chỉnh sửa. Phím nóng mặc định là C-space. Nếu một người nhập tiền tố cho tên mong muốn trước khi mở hộp, kết quả trùng khớp đầu tiên hoặc gần như sai sẽ hiển thị. Kết quả giống như khi người ta nhập tiền tố sau khi hộp được hiển thị. Hiển thị phần hoàn thành sau khi trích dẫn hoàn thành tên tệp trong thư mục hiện tại thay vì thư mục gốc.

Nhấn Tab sau tiền tố thường có tác dụng tương tự như Hiển thị phần hoàn thành. (Không có tiền tố, nó sẽ thụt lề.) Tuy nhiên, nếu chỉ có một kết quả khớp với tiền tố, kết quả khớp đó ngay lập tức được thêm vào văn bản soạn thảo mà không cần mở hộp.

Gọi 'Hiển thị phần hoàn thành' hoặc nhấn Tab sau tiền tố, bên ngoài chuỗi và không có '.' trước đó. mở một hộp có từ khóa, tên dựng sẵn và tên cấp mô-đun có sẵn.

Khi chỉnh sửa mã trong trình chỉnh sửa (ngược lại với Shell), hãy tăng tên cấp mô-đun có sẵn bằng cách chạy mã của bạn và không khởi động lại Shell sau đó. Điều này đặc biệt hữu ích sau khi thêm nội dung nhập vào đầu tệp. Điều này cũng làm tăng khả năng hoàn thành thuộc tính.

Các hộp hoàn thành ban đầu loại trừ các tên bắt đầu bằng '_' hoặc, đối với các mô-đun, không được bao gồm trong '__all__'. Có thể truy cập tên ẩn bằng cách nhập '_' sau '.', trước hoặc sau khi hộp được mở.

Mẹo gọi

Mẹo gọi được hiển thị tự động khi một người nhập ( sau tên của hàm accessible. Biểu thức tên hàm có thể bao gồm dấu chấm và chỉ số dưới. Mẹo gọi vẫn tồn tại cho đến khi nó được nhấp vào, con trỏ được di chuyển ra khỏi vùng đối số hoặc ) được gõ. Bất cứ khi nào con trỏ ở phần đối số của một định nghĩa, hãy chọn Chỉnh sửa và "Hiển thị Mẹo cuộc gọi" trên menu hoặc nhập phím tắt của nó để hiển thị mẹo gọi.

Mẹo gọi bao gồm chữ ký của hàm và chuỗi tài liệu cho đến dòng trống đầu tiên hoặc dòng không trống thứ năm. (Một số hàm dựng sẵn thiếu chữ ký có thể truy cập được.) Dấu '/' hoặc '*' trong chữ ký cho biết rằng các đối số trước hoặc sau chỉ được truyền theo vị trí hoặc tên (từ khóa). Chi tiết có thể thay đổi.

Trong Shell, các chức năng có thể truy cập tùy thuộc vào mô-đun nào đã được nhập vào quy trình của người dùng, bao gồm cả những mô-đun được nhập bởi chính Idle và định nghĩa nào đã được chạy, tất cả kể từ lần khởi động lại gần đây nhất.

Ví dụ: khởi động lại Shell và nhập itertools.count(. Mẹo gọi xuất hiện vì Idle nhập itertools vào quy trình của người dùng để sử dụng. (Điều này có thể thay đổi.) Nhập turtle.write( và không có gì xuất hiện. Nhàn rỗi không tự nhập rùa. Mục menu và phím tắt cũng không làm gì cả. Nhập import turtle. Sau đó, turtle.write( sẽ hiển thị mẹo gọi.

Trong trình soạn thảo, câu lệnh nhập không có hiệu lực cho đến khi chạy tệp. Người ta có thể muốn chạy một tệp sau khi viết câu lệnh nhập, sau khi thêm định nghĩa hàm hoặc sau khi mở tệp hiện có.

Khối định dạng

Đoạn định dạng lại sẽ gói lại một khối ('đoạn') gồm các nhận xét không trống được thụt lề bằng nhau liền kề nhau, một khối văn bản tương tự trong một chuỗi nhiều dòng hoặc một tập hợp con được chọn của một trong hai. Nếu cần, hãy thêm một dòng trống để tách chuỗi khỏi mã. Các dòng một phần trong vùng chọn sẽ mở rộng thành các dòng hoàn chỉnh. Các dòng kết quả có cùng mức thụt lề như trước nhưng có tổng chiều dài tối đa là N cột (ký tự). Thay đổi N mặc định là 72 trên tab Cửa sổ của Cài đặt IDLE.

Bối cảnh mã

Trong cửa sổ soạn thảo chứa mã Python, ngữ cảnh mã có thể được chuyển đổi để hiển thị hoặc ẩn một ngăn ở đầu cửa sổ. Khi được hiển thị, ngăn này sẽ đóng băng các dòng mở cho mã khối, chẳng hạn như những dòng bắt đầu bằng từ khóa class, def hoặc if, nếu không sẽ bị cuộn ra khỏi chế độ xem. Kích thước của khung sẽ được mở rộng và thu gọn khi cần để hiển thị tất cả các cấp độ ngữ cảnh hiện tại, lên đến số dòng tối đa được xác định trong hộp thoại Định cấu hình IDLE (mặc định là 15). Nếu không có dòng ngữ cảnh hiện tại và tính năng này được bật thì một dòng trống sẽ hiển thị. Nhấp vào một dòng trong khung ngữ cảnh sẽ di chuyển dòng đó lên đầu trình chỉnh sửa.

Có thể định cấu hình văn bản và màu nền cho ngăn ngữ cảnh trong tab Nổi bật trong hộp thoại Định cấu hình IDLE.

Cửa sổ vỏ

Trong Shell của IDLE, nhập, chỉnh sửa và gọi lại các câu lệnh hoàn chỉnh. (Hầu hết các bảng điều khiển và thiết bị đầu cuối chỉ hoạt động với một đường dây vật lý tại một thời điểm).

Gửi câu lệnh một dòng để thực thi bằng cách nhấn Return bằng con trỏ ở bất kỳ đâu trên dòng. Nếu một dòng được mở rộng bằng Dấu gạch chéo ngược (\), con trỏ phải ở dòng vật lý cuối cùng. Gửi câu lệnh ghép nhiều dòng bằng cách nhập một dòng trống sau câu lệnh.

Khi một người dán mã vào Shell, nó sẽ không được biên dịch và có thể được thực thi cho đến khi chạm vào Return, như được chỉ định ở trên. Người ta có thể chỉnh sửa mã đã dán trước. Nếu dán nhiều câu lệnh vào Shell, kết quả sẽ là SyntaxError khi nhiều câu lệnh được biên dịch như thể chúng là một.

Các dòng chứa RESTART có nghĩa là quá trình thực thi của người dùng đã được bắt đầu lại. Điều này xảy ra khi quá trình thực thi của người dùng gặp sự cố, khi người dùng yêu cầu khởi động lại trên menu Shell hoặc khi người dùng chạy mã trong cửa sổ soạn thảo.

Các tính năng chỉnh sửa được mô tả trong các phần phụ trước hoạt động khi nhập mã một cách tương tác. Cửa sổ Shell của IDLE cũng phản hồi như sau:

  • C-c cố gắng làm gián đoạn việc thực thi câu lệnh (nhưng có thể thất bại).

  • C-d đóng Shell nếu được gõ tại dấu nhắc >>>.

  • Alt-pAlt-n (C-pC-n trên macOS) truy xuất lời nhắc hiện tại câu lệnh đã nhập trước đó hoặc tiếp theo khớp với bất kỳ nội dung nào đã được nhập.

  • Return trong khi con trỏ ở trên bất kỳ câu lệnh nào trước đó sẽ thêm câu lệnh sau vào bất kỳ thứ gì đã được nhập tại dấu nhắc.

Màu văn bản

Chế độ chờ mặc định có màu đen trên văn bản màu trắng nhưng tô màu văn bản có ý nghĩa đặc biệt. Đối với shell, đó là đầu ra shell, lỗi shell, đầu ra người dùng và lỗi người dùng. Đối với mã Python, tại dấu nhắc shell hoặc trong trình soạn thảo, đây là các từ khóa, tên hàm và lớp dựng sẵn, các tên theo sau classdef, chuỗi và nhận xét. Đối với bất kỳ cửa sổ văn bản nào, đây là con trỏ (khi hiện diện), văn bản được tìm thấy (khi có thể) và văn bản được chọn.

IDLE cũng làm nổi bật soft keywords match, case_ trong các câu lệnh khớp mẫu. Tuy nhiên, việc tô sáng này không hoàn hảo và sẽ không chính xác trong một số trường hợp hiếm gặp, bao gồm một số _-s trong mẫu case.

Việc tô màu văn bản được thực hiện ở chế độ nền nên đôi khi vẫn hiển thị được văn bản không được tô màu. Để thay đổi cách phối màu, hãy sử dụng tab Đánh dấu hộp thoại Định cấu hình IDLE. Người dùng không thể định cấu hình việc đánh dấu các dòng điểm dừng của trình gỡ lỗi trong trình soạn thảo và văn bản trong cửa sổ bật lên và hộp thoại.

Khởi động và thực thi mã

Khi khởi động với tùy chọn -s, IDLE sẽ thực thi tệp được tham chiếu bởi các biến môi trường IDLESTARTUP hoặc PYTHONSTARTUP. IDLE lần đầu tiên kiểm tra IDLESTARTUP; nếu có IDLESTARTUP thì tệp được tham chiếu sẽ chạy. Nếu IDLESTARTUP không có, IDLE sẽ kiểm tra PYTHONSTARTUP. Các tệp được tham chiếu bởi các biến môi trường này là nơi thuận tiện để lưu trữ các hàm được sử dụng thường xuyên từ shell IDLE hoặc để thực thi các câu lệnh nhập để nhập các mô-đun phổ biến.

Ngoài ra, Tk cũng tải tệp khởi động nếu có. Lưu ý rằng tệp Tk được tải vô điều kiện. Tệp bổ sung này là .Idle.py và được tìm kiếm trong thư mục chính của người dùng. Các câu lệnh trong tệp này sẽ được thực thi trong không gian tên Tk, vì vậy tệp này không hữu ích cho việc nhập các hàm được sử dụng từ trình bao Python của IDLE.

Sử dụng dòng lệnh

IDLE có thể được gọi từ dòng lệnh với nhiều tùy chọn khác nhau. Cú pháp chung là:

python -m idlib [tùy chọn] [tệp ...]

Các tùy chọn sau đây có sẵn:

-c <command>

Chạy lệnh Python đã chỉ định trong cửa sổ shell. Ví dụ: vượt qua -c "print('Hello, World!')". Trên Windows, dấu ngoặc kép bên ngoài phải là dấu ngoặc kép như hình.

-d

Kích hoạt trình gỡ lỗi và mở cửa sổ shell.

-e

Mở một cửa sổ soạn thảo.

-h

In thông báo trợ giúp với sự kết hợp hợp pháp của các tùy chọn và thoát.

-i

Mở một cửa sổ shell.

-r <file>

Chạy tệp được chỉ định trong cửa sổ shell.

-s

Chạy tệp khởi động (như được xác định bởi các biến môi trường IDLESTARTUP hoặc PYTHONSTARTUP) trước khi mở cửa sổ shell.

-t <title>

Đặt tiêu đề của cửa sổ shell.

-

Đọc và thực thi đầu vào tiêu chuẩn trong cửa sổ shell. Tùy chọn này phải là tùy chọn cuối cùng trước bất kỳ đối số nào.

Nếu đối số được cung cấp:

  • Nếu -, -c hoặc -r được sử dụng, tất cả các đối số sẽ được đặt trong sys.argv[1:]sys.argv[0] được đặt thành '', '-c' hoặc '-r' tương ứng. Không có cửa sổ soạn thảo nào được mở, ngay cả khi đó là cài đặt mặc định trong hộp thoại Options.

  • Mặt khác, các đối số được coi là tệp được mở để chỉnh sửa và sys.argv phản ánh các đối số được truyền cho chính IDLE.

Lỗi khởi động

IDLE sử dụng một ổ cắm để giao tiếp giữa quy trình IDLE GUI và quy trình thực thi mã người dùng. Kết nối phải được thiết lập bất cứ khi nào Shell khởi động hoặc khởi động lại. (Cái sau được biểu thị bằng một đường phân chia có nội dung 'RESTART'). Nếu quy trình người dùng không kết nối được với quy trình GUI, nó thường hiển thị hộp lỗi Tk với thông báo 'không thể kết nối' hướng người dùng đến đây. Sau đó nó thoát ra.

Một lỗi kết nối cụ thể trên hệ thống Unix là do các quy tắc giả mạo được định cấu hình sai ở đâu đó trong thiết lập mạng của hệ thống. Khi IDLE được khởi động từ một thiết bị đầu cuối, người ta sẽ thấy thông báo bắt đầu bằng ** Invalid host:. Giá trị hợp lệ là 127.0.0.1 (idlelib.rpc.LOCALHOST). Người ta có thể chẩn đoán bằng tcpconnect -irv 127.0.0.1 6543 trong một cửa sổ đầu cuối và tcplisten <same args> trong một cửa sổ khác.

Nguyên nhân lỗi phổ biến là do tệp do người dùng viết có cùng tên với mô-đun thư viện tiêu chuẩn, chẳng hạn như random.pytkinter.py. Khi một tệp như vậy nằm trong cùng thư mục với tệp sắp chạy, IDLE không thể nhập tệp stdlib. Cách khắc phục hiện tại là đổi tên tệp người dùng.

Mặc dù ít phổ biến hơn trước đây nhưng chương trình chống vi-rút hoặc tường lửa có thể dừng kết nối. Nếu chương trình không thể được dạy để cho phép kết nối thì phải tắt nó để IDLE hoạt động. Việc cho phép kết nối nội bộ này là an toàn vì không có dữ liệu nào hiển thị trên các cổng bên ngoài. Một vấn đề tương tự là cấu hình mạng sai khiến chặn kết nối.

Các sự cố cài đặt Python đôi khi khiến IDLE dừng lại: nhiều phiên bản có thể xung đột hoặc một bản cài đặt có thể cần quyền truy cập của quản trị viên. Nếu một người hoàn tác xung đột hoặc không thể hoặc không muốn chạy với tư cách quản trị viên, thì cách dễ nhất là xóa hoàn toàn Python và bắt đầu lại.

Quá trình zombie pythonw.exe có thể là một vấn đề. Trên Windows, hãy sử dụng Trình quản lý tác vụ để kiểm tra và dừng nó nếu có. Đôi khi, quá trình khởi động lại do chương trình gặp sự cố hoặc ngắt bàn phím (control-C) có thể không kết nối được. Việc loại bỏ hộp lỗi hoặc sử dụng Khởi động lại Shell trên menu Shell có thể khắc phục sự cố tạm thời.

Khi IDLE khởi động lần đầu tiên, nó sẽ cố đọc các tệp cấu hình người dùng trong ~/.idlerc/ (~ là thư mục chính của một người). Nếu có vấn đề, một thông báo lỗi sẽ được hiển thị. Bỏ qua những trục trặc ngẫu nhiên của đĩa, điều này có thể được ngăn chặn bằng cách không bao giờ chỉnh sửa tệp bằng tay. Thay vào đó, hãy sử dụng hộp thoại cấu hình trong Tùy chọn. Khi xảy ra lỗi trong tệp cấu hình người dùng, giải pháp tốt nhất có thể là xóa nó và bắt đầu lại với hộp thoại cài đặt.

Nếu IDLE thoát mà không có thông báo và nó không được khởi động từ bảng điều khiển, hãy thử khởi động nó từ bảng điều khiển hoặc thiết bị đầu cuối (python -m idlelib) và xem liệu điều này có dẫn đến thông báo lỗi hay không.

Trên các hệ thống dựa trên Unix có tcl/tk cũ hơn 8.6.11 (xem About IDLE), một số ký tự nhất định của một số phông chữ nhất định có thể gây ra lỗi tk kèm theo một thông báo tới thiết bị đầu cuối. Điều này có thể xảy ra nếu người ta khởi động IDLE để chỉnh sửa tệp có ký tự như vậy hoặc sau đó khi nhập ký tự đó. Nếu không thể nâng cấp tcl/tk, hãy định cấu hình lại IDLE để sử dụng phông chữ hoạt động tốt hơn.

Chạy mã người dùng

Với một số trường hợp ngoại lệ hiếm hoi, kết quả của việc thực thi mã Python bằng IDLE sẽ giống như thực thi cùng một mã theo phương thức mặc định, trực tiếp với Python trong bảng điều khiển hệ thống ở chế độ văn bản hoặc cửa sổ đầu cuối. Tuy nhiên, giao diện và hoạt động khác nhau đôi khi ảnh hưởng đến kết quả hiển thị. Ví dụ: sys.modules bắt đầu với nhiều mục nhập hơn và threading.active_count() trả về 2 thay vì 1.

Theo mặc định, IDLE chạy mã người dùng trong một quy trình hệ điều hành riêng biệt thay vì trong quy trình giao diện người dùng chạy shell và trình soạn thảo. Trong quá trình thực thi, nó thay thế sys.stdin, sys.stdoutsys.stderr bằng các đối tượng nhận đầu vào và gửi đầu ra tới cửa sổ Shell. Các giá trị ban đầu được lưu trữ trong sys.__stdin__, sys.__stdout__sys.__stderr__ không được chạm vào nhưng có thể là None.

Gửi kết quả in từ một quy trình đến một tiện ích văn bản trong một quy trình khác chậm hơn so với việc in tới thiết bị đầu cuối hệ thống trong cùng một quy trình. Điều này có tác dụng cao nhất khi in nhiều đối số, vì chuỗi cho mỗi đối số, mỗi dấu phân cách, dòng mới được gửi riêng. Để phát triển, đây thường không phải là vấn đề, nhưng nếu muốn in nhanh hơn trong IDLE, hãy định dạng và kết hợp mọi thứ người ta muốn hiển thị cùng nhau rồi in một chuỗi. Cả chuỗi định dạng và str.join() đều có thể giúp kết hợp các trường và dòng.

Các thay thế luồng tiêu chuẩn của IDLE không được kế thừa bởi các quy trình con được tạo trong quá trình thực thi, cho dù trực tiếp bằng mã người dùng hay bởi các mô-đun như đa xử lý. Nếu quy trình con đó sử dụng input từ sys.stdin hoặc print hoặc write đến sys.stdout hoặc sys.stderr, thì IDLE sẽ được khởi động trong cửa sổ dòng lệnh. (Trên Windows, hãy sử dụng python hoặc py thay vì pythonw hoặc pyw.) Sau đó, quy trình con phụ sẽ được gắn vào cửa sổ đó để nhập và xuất.

Nếu sys được đặt lại bằng mã người dùng, chẳng hạn như với importlib.reload(sys), các thay đổi của IDLE sẽ bị mất và dữ liệu nhập từ bàn phím cũng như đầu ra ra màn hình sẽ không hoạt động chính xác.

Khi Shell có tiêu điểm, nó sẽ điều khiển bàn phím và màn hình. Điều này thường trong suốt nhưng các chức năng truy cập trực tiếp vào bàn phím và màn hình sẽ không hoạt động. Chúng bao gồm các chức năng dành riêng cho hệ thống để xác định xem một phím đã được nhấn chưa và nếu có thì nhấn phím nào.

Mã IDLE chạy trong quá trình thực thi sẽ thêm các khung vào ngăn xếp cuộc gọi mà lẽ ra không có ở đó. IDLE bao bọc sys.getrecursionlimitsys.setrecursionlimit để giảm tác dụng của các khung ngăn xếp bổ sung.

Khi mã người dùng tăng SystemExit trực tiếp hoặc bằng cách gọi sys.exit, IDLE sẽ quay lại dấu nhắc Shell thay vì thoát.

Đầu ra của người dùng trong Shell

Khi một chương trình xuất ra văn bản, kết quả sẽ được xác định bởi thiết bị đầu ra tương ứng. Khi IDLE thực thi mã người dùng, sys.stdoutsys.stderr được kết nối với vùng hiển thị của Shell của IDLE. Một số tính năng của nó được kế thừa từ tiện ích Văn bản Tk cơ bản. Những người khác được lập trình bổ sung. Ở những nơi quan trọng, Shell được thiết kế để phát triển hơn là chạy sản xuất.

Ví dụ, Shell không bao giờ vứt bỏ sản phẩm đầu ra. Một chương trình gửi đầu ra không giới hạn tới Shell cuối cùng sẽ lấp đầy bộ nhớ, dẫn đến lỗi bộ nhớ. Ngược lại, một số cửa sổ văn bản hệ thống chỉ giữ lại n dòng đầu ra cuối cùng. Ví dụ: bảng điều khiển Windows giữ từ 1 đến 9999 dòng do người dùng cài đặt, với 300 dòng mặc định.

Tiện ích Văn bản Tk, và do đó là Shell của IDLE, hiển thị các ký tự (điểm mã) trong tập hợp con BMP (Mặt phẳng đa ngôn ngữ cơ bản) của Unicode. Ký tự nào được hiển thị bằng hình tượng thích hợp và ký tự nào có hộp thay thế tùy thuộc vào hệ điều hành và phông chữ được cài đặt. Ký tự tab khiến văn bản sau bắt đầu sau khi dừng tab tiếp theo. (Chúng xuất hiện cứ sau 8 'ký tự'). Ký tự dòng mới khiến văn bản sau xuất hiện trên một dòng mới. Các ký tự điều khiển khác bị bỏ qua hoặc hiển thị dưới dạng khoảng trắng, hộp hoặc thứ gì khác, tùy thuộc vào hệ điều hành và phông chữ. (Di chuyển con trỏ văn bản qua đầu ra như vậy bằng các phím mũi tên có thể biểu hiện một số hành vi giãn cách đáng ngạc nhiên.)

>>> s = 'a\tb\a<\x02><\r>\bc\nd' # Enter 22 ký tự.
>>> len(s)
14
>>> s # Display đại diện
'a\tb\x07<\x02><\r>\x08c\nd'
>>> print(s, end='') # Display s nguyên trạng.
# Result thay đổi tùy theo hệ điều hành và phông chữ.  Hãy thử nó.

Hàm repr được sử dụng để tạo tiếng vang tương tác của các giá trị biểu thức. Nó trả về một phiên bản đã thay đổi của chuỗi đầu vào trong đó mã điều khiển, một số điểm mã BMP và tất cả các điểm mã không phải BMP được thay thế bằng mã thoát. Như đã trình bày ở trên, nó cho phép người ta xác định các ký tự trong một chuỗi, bất kể chúng được hiển thị như thế nào.

Đầu ra bình thường và đầu ra lỗi thường được giữ tách biệt (trên các dòng riêng biệt) với đầu vào mã và đầu ra khác. Mỗi người đều có màu sắc nổi bật khác nhau.

Đối với các lần theo dõi SyntaxError, dấu '^' thông thường nơi phát hiện lỗi được thay thế bằng cách tô màu văn bản bằng phần đánh dấu lỗi. Khi mã chạy từ một tệp gây ra các ngoại lệ khác, người ta có thể nhấp chuột phải vào dòng truy nguyên để chuyển đến dòng tương ứng trong trình chỉnh sửa IDLE. Tập tin sẽ được mở nếu cần thiết.

Shell có một phương tiện đặc biệt để nén các dòng đầu ra thành nhãn 'Văn bản đã nén'. Việc này được thực hiện tự động đối với đầu ra trên N dòng (N = 50 theo mặc định). N có thể được thay đổi trong phần PyShell của trang Chung của hộp thoại Cài đặt. Đầu ra có ít dòng hơn có thể được nén bằng cách nhấp chuột phải vào đầu ra. Đây có thể là những dòng hữu ích đủ dài để làm chậm quá trình cuộn.

Đầu ra bị nén được mở rộng tại chỗ bằng cách nhấp đúp vào nhãn. Nó cũng có thể được gửi vào clipboard hoặc một cửa sổ xem riêng bằng cách nhấp chuột phải vào nhãn.

Phát triển ứng dụng tkinter

IDLE có chủ ý khác với Python tiêu chuẩn để tạo điều kiện phát triển các chương trình tkinter. Nhập import tkinter as tk; root = tk.Tk() bằng Python tiêu chuẩn và không có gì xuất hiện. Nhập tương tự vào IDLE và cửa sổ tk xuất hiện. Trong Python tiêu chuẩn, người ta cũng phải nhập root.update() để xem cửa sổ. IDLE thực hiện tương đương ở chế độ nền, khoảng 20 lần một giây, tức là khoảng 50 mili giây một lần. Tiếp theo nhập b = tk.Button(root, text='button'); b.pack(). Một lần nữa, không có gì thay đổi rõ ràng trong Python tiêu chuẩn cho đến khi người ta nhập root.update().

Hầu hết các chương trình tkinter chạy root.mainloop(), thường không quay trở lại cho đến khi ứng dụng tk bị hủy. Nếu chương trình được chạy với python -i hoặc từ trình soạn thảo IDLE, dấu nhắc shell >>> sẽ không xuất hiện cho đến khi mainloop() quay trở lại, lúc đó không còn gì để tương tác.

Khi chạy chương trình tkinter từ trình soạn thảo IDLE, người ta có thể nhận xét lệnh gọi vòng lặp chính. Sau đó, người ta nhận được lời nhắc shell ngay lập tức và có thể tương tác với ứng dụng trực tiếp. Người ta chỉ cần nhớ kích hoạt lại lệnh gọi vòng lặp chính khi chạy trong Python tiêu chuẩn.

Chạy mà không có quy trình con

Theo mặc định, IDLE thực thi mã người dùng trong một quy trình con riêng biệt thông qua một ổ cắm sử dụng giao diện vòng lặp nội bộ. Kết nối này không hiển thị bên ngoài và không có dữ liệu nào được gửi hoặc nhận từ internet. Nếu phần mềm tường lửa vẫn phàn nàn, bạn có thể bỏ qua nó.

Nếu nỗ lực kết nối ổ cắm không thành công, Idle sẽ thông báo cho bạn. Những lỗi như vậy đôi khi chỉ xảy ra nhất thời, nhưng nếu dai dẳng thì sự cố có thể là do tường lửa chặn kết nối hoặc cấu hình sai của một hệ thống cụ thể. Cho đến khi sự cố được khắc phục, người ta có thể chạy Không tải bằng khóa chuyển dòng lệnh -n.

Nếu IDLE được khởi động bằng khóa chuyển dòng lệnh -n, nó sẽ chạy trong một tiến trình duy nhất và sẽ không tạo ra tiến trình con chạy máy chủ thực thi Python RPC. Điều này có thể hữu ích nếu Python không thể tạo quy trình con hoặc giao diện ổ cắm RPC trên nền tảng của bạn. Tuy nhiên, ở chế độ này, mã người dùng không bị tách biệt khỏi IDLE. Ngoài ra, môi trường không được khởi động lại khi chọn Mô-đun Chạy/Chạy (F5). Nếu mã của bạn đã được sửa đổi, bạn phải tải lại() các mô-đun bị ảnh hưởng và nhập lại bất kỳ mục cụ thể nào (ví dụ: from foo import baz) nếu các thay đổi có hiệu lực. Vì những lý do này, tốt nhất nên chạy IDLE với quy trình con mặc định nếu có thể.

Sắp loại bỏ từ phiên bản 3.4.

Trợ giúp và Tùy chọn

Nguồn trợ giúp

Mục menu trợ giúp "IDLE Help" hiển thị phiên bản html được định dạng của chương IDLE trong Tham khảo Thư viện. Kết quả trong cửa sổ văn bản tkinter chỉ đọc, gần giống với những gì người ta nhìn thấy trong trình duyệt web. Điều hướng qua văn bản bằng con lăn chuột, thanh cuộn hoặc nhấn giữ phím mũi tên lên và xuống. Hoặc nhấp vào nút TOC (Mục lục) và chọn tiêu đề phần trong hộp đã mở.

Mục menu trợ giúp "Tài liệu Python" mở ra các nguồn trợ giúp phong phú, bao gồm các hướng dẫn, có sẵn tại docs.python.org/x.y, trong đó 'x.y' là phiên bản Python hiện đang chạy. Nếu hệ thống của bạn có bản sao tài liệu ngoại tuyến (đây có thể là một tùy chọn cài đặt), thay vào đó, bản sao đó sẽ được mở.

Các URL đã chọn có thể được thêm hoặc xóa khỏi menu trợ giúp bất kỳ lúc nào bằng cách sử dụng tab Chung của hộp thoại Định cấu hình IDLE.

Đặt tùy chọn

Có thể thay đổi tùy chọn phông chữ, đánh dấu, phím và tùy chọn chung thông qua Định cấu hình IDLE trên menu Tùy chọn. Cài đặt người dùng không mặc định được lưu trong thư mục .idlerc trong thư mục chính của người dùng. Các vấn đề do tệp cấu hình người dùng xấu gây ra được giải quyết bằng cách chỉnh sửa hoặc xóa một hoặc nhiều tệp trong .idlerc.

Trên tab Phông chữ, hãy xem mẫu văn bản để biết hiệu ứng của kiểu phông chữ và kích thước trên nhiều ký tự trong nhiều ngôn ngữ. Chỉnh sửa mẫu để thêm các ký tự khác mà cá nhân quan tâm. Sử dụng mẫu để chọn phông chữ đơn cách. Nếu các ký tự cụ thể gặp sự cố trong Shell hoặc trình chỉnh sửa, hãy thêm chúng vào đầu mẫu và thử thay đổi kích thước đầu tiên rồi đến phông chữ.

Trên tab Điểm nổi bật và Phím, chọn chủ đề và bộ phím màu có sẵn hoặc tùy chỉnh. Để sử dụng chủ đề màu hoặc bộ khóa tích hợp mới hơn với IDLE cũ hơn, hãy lưu nó dưới dạng chủ đề hoặc bộ khóa tùy chỉnh mới và các IDLE cũ hơn cũng có thể truy cập được.

IDLE trên macOS

Trong Tùy chọn hệ thống: Dock, người ta có thể đặt "Thích tab khi mở tài liệu" thành "Luôn luôn". Cài đặt này không tương thích với khung tk/tkinter GUI được IDLE sử dụng và nó phá vỡ một số tính năng của IDLE.

Tiện ích mở rộng

IDLE chứa tiện ích mở rộng. Có thể thay đổi tùy chọn cho tiện ích mở rộng bằng tab Tiện ích mở rộng của hộp thoại tùy chọn. Xem phần đầu của config-extensions.def trong thư mục Idlelib để biết thêm thông tin. Tiện ích mở rộng mặc định duy nhất hiện tại là zzdummy, một ví dụ cũng được sử dụng để thử nghiệm.

Idlelib --- triển khai ứng dụng IDLE

Source code: Lib/idlelib


Gói Lib/idlelib triển khai ứng dụng IDLE. Xem phần còn lại của trang này để biết cách sử dụng IDLE.

Các tập tin trong Idlelib được mô tả trong idlib/README.txt. Truy cập nó trong Idlelib hoặc nhấp vào Trợ giúp => Giới thiệu về IDLE trên menu IDLE. Tệp này cũng ánh xạ các mục menu IDLE tới mã triển khai mục đó. Ngoại trừ các tệp được liệt kê trong 'Khởi động', mã idlib là 'riêng tư' theo nghĩa là các thay đổi về tính năng có thể được chuyển ngược lại (xem PEP 434).