Chuyển tkinter sang html

Đưa ra một bảng HTML [mã] trong một tệp hoặc tại một URL nhất định. Đầu tiên, tải tất cả các bảng HTML vào tập lệnh Python bằng cách gọi Pandas’

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
47 chuyển URL của tài liệu HTML. Kết quả là một danh sách các Khung dữ liệu, mỗi khung một bảng HTML trong tài liệu. Thứ hai, chuyển đổi bất kỳ DataFrame cụ thể nào thành CSV bằng cách gọi hàm
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
48

Đây là ví dụ chung, thay thế URL cụ thể của bạn và xuất tệp CSV

import pandas as pd

html = '//en.wikipedia.org/wiki/Python_[programming_language]'
csv = 'my_file.csv'

# 1. Read all HTML tables from a given URL
tables = pd.read_html[html]

# 2. Write first table, for example, to the CSV file
tables[0].to_csv[csv]

Ví dụ – Xuất bảng trang Wiki của Python sang CSV

Đưa ra bảng mô tả đầu tiên của trang wiki Python

Bạn chuyển đổi nó thành CSV bằng cách sử dụng phương pháp sau được nêu ở trên

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']

Vì vậy, về cơ bản, chúng tôi chuyển đổi bảng đầu vào sau [HTML]

đến đầu ra sau

Cách chuyển đổi bảng HTML trong tệp thành tệp CSV bằng Python

💬 Thử thách. Đưa ra một bảng HTML duy nhất được lưu trữ trong một tệp

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
49. Làm cách nào để chuyển đổi tệp bảng đó thành tệp CSV bằng Python?

Hàm

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
50 hoạt động nếu bạn sử dụng đường dẫn tệp hoặc URL làm đối số. Để chuyển đổi tệp bảng HTML
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
49 thành tệp CSV
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
52 bằng Python, hãy làm theo ba bước sau

  1. Nhập thư viện gấu trúc
  2. Đọc bảng HTML dưới dạng DataFrame
    import pandas as pd
    
    
    # 1. Read all HTML tables from a given URL
    tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']
    
    # 2. Write first table, for example, to the CSV file
    tables[0].to_csv['my_file.csv']
    
    53 bằng cách gọi
    import pandas as pd
    
    
    # 1. Read all HTML tables from a given URL
    tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']
    
    # 2. Write first table, for example, to the CSV file
    tables[0].to_csv['my_file.csv']
    
    0
  3. Ghi DataFrame vào CSV bằng cách gọi
    import pandas as pd
    
    
    # 1. Read all HTML tables from a given URL
    tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']
    
    # 2. Write first table, for example, to the CSV file
    tables[0].to_csv['my_file.csv']
    
    1 nếu bạn không cần chỉ mục số hàng

Đây là mã cụ thể hoạt động

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]

Đây là tệp bảng HTML gốc

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
49

Đây là tệp CSV đã chuyển đổi

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
52

Đọc thêm

Bạn có thể tìm hiểu thêm về cách đọc bảng HTML vào Khung dữ liệu Pandas trong bài viết sau

🌍 Tài nguyên được đề xuất. Cách đọc bảng HTML với Pandas

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Gói

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 [“Giao diện Tk”] là giao diện Python tiêu chuẩn cho bộ công cụ Tcl/Tk GUI. Cả Tk và
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 đều khả dụng trên hầu hết các nền tảng Unix, bao gồm cả macOS, cũng như trên các hệ thống Windows

Chạy

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
3 từ dòng lệnh sẽ mở ra một cửa sổ hiển thị giao diện Tk đơn giản, cho bạn biết rằng
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 đã được cài đặt đúng cách trên hệ thống của bạn và cũng hiển thị phiên bản Tcl/Tk nào được cài đặt, vì vậy bạn có thể đọc tài liệu cụ thể về Tcl/Tk

Tkinter hỗ trợ nhiều phiên bản Tcl/Tk, được xây dựng có hoặc không có hỗ trợ luồng. Gói phát hành nhị phân Python chính thức Tcl/Tk 8. 6 luồng. Xem mã nguồn cho mô-đun

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
5 để biết thêm thông tin về các phiên bản được hỗ trợ

Tkinter không phải là một trình bao bọc mỏng, nhưng bổ sung một lượng hợp lý logic của riêng nó để làm cho trải nghiệm trở nên Pythonic hơn. Tài liệu này sẽ tập trung vào những bổ sung và thay đổi này, đồng thời tham khảo tài liệu Tcl/Tk chính thức để biết chi tiết không thay đổi

Ghi chú

Tcl/Tk 8. 5 [2007] đã giới thiệu một bộ thành phần giao diện người dùng theo chủ đề hiện đại cùng với một API mới để sử dụng chúng. Cả API cũ và mới vẫn khả dụng. Hầu hết các tài liệu bạn sẽ tìm thấy trực tuyến vẫn sử dụng API cũ và có thể đã lỗi thời

Xem thêm

  • TkDocs

    Hướng dẫn mở rộng về cách tạo giao diện người dùng với Tkinter. Giải thích các khái niệm chính và minh họa các phương pháp được đề xuất bằng API hiện đại

  • Tkinter 8. 5 tài liệu tham khảo. GUI cho Python

    Tài liệu tham khảo cho Tkinter 8. 5 chi tiết các lớp, phương thức và tùy chọn có sẵn

Tài nguyên Tcl/Tk

  • lệnh tk

    Tham chiếu toàn diện đến từng lệnh Tcl/Tk cơ bản được sử dụng bởi Tkinter

  • Trang chủ Tcl/Tk

    Tài liệu bổ sung và liên kết đến phát triển cốt lõi Tcl/Tk

Sách

  • Tkinter hiện đại dành cho các nhà phát triển Python bận rộn

    Bởi Mark Roseman. [ISBN 978-1999149567]

  • Lập trình Python và Tkinter

    Bởi Alan Moore. [ISBN 978-1788835886]

  • Lập trình Python

    Bởi Mark Lutz; . [ISBN 978-0596158101]

  • Tcl và Bộ công cụ Tk [tái bản lần 2]

    Bởi John Ousterhout, người phát minh ra Tcl/Tk, và Ken Jones; . [ISBN 978-0321336330]

Ngành kiến ​​​​trúc¶

Tcl/Tk không phải là một thư viện đơn lẻ mà bao gồm một vài mô-đun riêng biệt, mỗi mô-đun có chức năng riêng biệt và tài liệu chính thức của riêng nó. Các bản phát hành nhị phân của Python cũng gửi một mô-đun bổ trợ cùng với nó

tcl

Tcl là một ngôn ngữ lập trình được giải thích động, giống như Python. Mặc dù nó có thể được sử dụng riêng như một ngôn ngữ lập trình có mục đích chung, nhưng nó thường được nhúng vào các ứng dụng C dưới dạng công cụ tạo tập lệnh hoặc giao diện cho bộ công cụ Tk. Thư viện Tcl có giao diện C để tạo và quản lý một hoặc nhiều phiên bản của trình thông dịch Tcl, chạy các lệnh và tập lệnh Tcl trong các phiên bản đó và thêm các lệnh tùy chỉnh được triển khai trong Tcl hoặc C. Mỗi trình thông dịch có một hàng đợi sự kiện và có các phương tiện để gửi các sự kiện tới nó và xử lý chúng. Không giống như Python, mô hình thực thi của Tcl được thiết kế xung quanh đa nhiệm hợp tác và Tkinter khắc phục sự khác biệt này [xem Mô hình phân luồng để biết chi tiết]

TK

Tk là gói Tcl được triển khai trong C có thêm các lệnh tùy chỉnh để tạo và thao tác với các tiện ích GUI. Mỗi đối tượng

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6 nhúng phiên bản trình thông dịch Tcl của chính nó với Tk được tải vào nó. Các tiện ích của Tk rất có thể tùy chỉnh, mặc dù phải trả giá bằng giao diện lỗi thời. Tk sử dụng hàng đợi sự kiện của Tcl để tạo và xử lý các sự kiện GUI

Ttk

Tk theo chủ đề [Ttk] là một nhóm tiện ích Tk mới hơn cung cấp giao diện đẹp hơn nhiều trên các nền tảng khác nhau so với nhiều tiện ích Tk cổ điển. Ttk được phân phối như một phần của Tk, bắt đầu với Tk phiên bản 8. 5. Các liên kết Python được cung cấp trong một mô-đun riêng biệt,

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
7

Trong nội bộ, Tk và Ttk sử dụng các tiện ích của hệ điều hành cơ bản, i. e. , Xlib trên Unix/X11, Cocoa trên macOS, GDI trên Windows

Khi ứng dụng Python của bạn sử dụng một lớp trong Tkinter, e. g. , để tạo một tiện ích, trước tiên mô-đun

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 sẽ tập hợp một chuỗi lệnh Tcl/Tk. Nó chuyển chuỗi lệnh Tcl đó tới một mô-đun nhị phân
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
5 bên trong, sau đó gọi trình thông dịch Tcl để đánh giá nó. Sau đó, trình thông dịch Tcl sẽ gọi các gói Tk và/hoặc Ttk, từ đó sẽ thực hiện các lệnh gọi đến Xlib, Cocoa hoặc GDI

Mô-đun Tkinter¶

Hỗ trợ cho Tkinter được trải rộng trên một số mô-đun. Hầu hết các ứng dụng sẽ cần mô-đun chính

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0, cũng như mô-đun
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
7, cung cấp API và bộ widget theo chủ đề hiện đại

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
6

lớp tkinter. Tk[screenName=Không có, baseName=None, className='Tk', useTk=True, sync=False, use=None]

Xây dựng tiện ích Tk cấp cao nhất, thường là cửa sổ chính của ứng dụng và khởi tạo trình thông dịch Tcl cho tiện ích này. Mỗi phiên bản có trình thông dịch Tcl được liên kết riêng

Lớp

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6 thường được khởi tạo bằng cách sử dụng tất cả các giá trị mặc định. Tuy nhiên, các đối số từ khóa sau hiện được công nhận

Tên hiển thị

Khi được cung cấp [dưới dạng chuỗi], hãy đặt biến môi trường

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
83. [chỉ dành cho X11]

baseName

Tên tệp hồ sơ. Theo mặc định, baseName được lấy từ tên chương trình [

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
84]

tên lớp

Tên của lớp widget. Được sử dụng làm tệp hồ sơ và cũng là tên mà Tcl được gọi [argv0 trong interp]

sử dụngTk

Nếu

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
85, khởi tạo hệ thống con Tk. Hàm
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
86 đặt giá trị này thành
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
87

đồng bộ hóa

Nếu

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
85, hãy thực hiện đồng bộ tất cả các lệnh của máy chủ X để báo cáo lỗi ngay lập tức. Có thể được sử dụng để gỡ lỗi. [chỉ dành cho X11]

sử dụng

Chỉ định id của cửa sổ để nhúng ứng dụng, thay vì nó được tạo dưới dạng cửa sổ cấp cao nhất độc lập. id phải được chỉ định theo cách giống như giá trị cho tùy chọn -use cho các tiện ích cấp cao nhất [nghĩa là nó có dạng giống như được trả về bởi

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
89]

Lưu ý rằng trên một số nền tảng, điều này sẽ chỉ hoạt động chính xác nếu id đề cập đến khung Tk hoặc cấp cao nhất đã bật tùy chọn -container của nó

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6 đọc và giải thích các tệp hồ sơ, có tên là
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
61 và
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
62, vào trình thông dịch Tcl và gọi
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
63 về nội dung của
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
64 và
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
65. Đường dẫn cho các tệp hồ sơ là biến môi trường
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
66 hoặc, nếu điều đó không được xác định, thì
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
67

đến

Đối tượng ứng dụng Tk được tạo bằng cách khởi tạo

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6. Điều này cung cấp quyền truy cập vào trình thông dịch Tcl. Mỗi tiện ích được đính kèm cùng một phiên bản của
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6 có cùng giá trị cho thuộc tính
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
50 của nó

chính chủ

Đối tượng widget chứa widget này. Đối với

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6, cái chính là
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
52 vì nó là cửa sổ chính. Các thuật ngữ chính và cha mẹ tương tự nhau và đôi khi được sử dụng thay thế cho nhau làm tên đối số; . cha/con phản ánh mối quan hệ dạng cây trong khi chủ/tớ phản ánh cấu trúc vùng chứa

trẻ em

Hậu duệ trực tiếp của tiện ích con này dưới dạng

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
55 với tên tiện ích con là khóa và đối tượng thể hiện con là giá trị

tkinter. Tcl[screenName=Không có, baseName=None, className='Tk', useTk=False]

Hàm

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
56 là một hàm xuất xưởng tạo ra một đối tượng giống như được tạo bởi lớp
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6, ngoại trừ việc nó không khởi tạo hệ thống con Tk. Điều này thường hữu ích nhất khi điều khiển trình thông dịch Tcl trong một môi trường mà người ta không muốn tạo các cửa sổ cấp trên không liên quan hoặc khi người ta không thể [chẳng hạn như các hệ thống Unix/Linux không có máy chủ X]. Một đối tượng được tạo bởi đối tượng
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
56 có thể tạo một cửa sổ Toplevel [và khởi tạo hệ thống con Tk] bằng cách gọi phương thức
import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
59 của nó

Các mô-đun cung cấp hỗ trợ Tk bao gồm

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0

Mô-đun Tkinter chính

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]
61

Hộp thoại cho phép người dùng chọn màu

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]
62

Lớp cơ sở cho các hộp thoại được định nghĩa trong các mô-đun khác được liệt kê tại đây

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]
63

Các hộp thoại phổ biến để cho phép người dùng chỉ định tệp để mở hoặc lưu

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]
64

Các tiện ích hỗ trợ làm việc với phông chữ

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]
65

Truy cập vào hộp thoại Tk tiêu chuẩn

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]
66

Tiện ích văn bản có thanh cuộn dọc được tích hợp sẵn

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]
67

Hộp thoại cơ bản và chức năng tiện lợi

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
7

Bộ tiện ích theo chủ đề được giới thiệu trong Tk 8. 5, cung cấp các lựa chọn thay thế hiện đại cho nhiều tiện ích cổ điển trong mô-đun chính

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0

mô-đun bổ sung

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
5

Mô-đun nhị phân chứa giao diện cấp thấp tới Tcl/Tk. Nó được nhập tự động bởi mô-đun chính

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 và không bao giờ được sử dụng trực tiếp bởi các lập trình viên ứng dụng. Nó thường là một thư viện dùng chung [hoặc DLL], nhưng trong một số trường hợp có thể được liên kết tĩnh với trình thông dịch Python

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
72

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

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
74

Các hằng ký hiệu có thể được sử dụng thay cho các chuỗi khi truyền các tham số khác nhau cho các lệnh gọi Tkinter. Được nhập tự động bởi mô-đun

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 chính

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
76

[thử nghiệm] Hỗ trợ kéo và thả cho

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0. Điều này sẽ không còn được dùng nữa khi nó được thay thế bằng Tk DND

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
78

[không dùng nữa] Gói Tcl/Tk của bên thứ ba cũ hơn có thêm một số tiện ích con mới. Các lựa chọn thay thế tốt hơn cho hầu hết có thể được tìm thấy trong

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
7

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
50

Đồ họa con rùa trong cửa sổ Tk

Tkinter Life Preserve¶

Phần này không được thiết kế để trở thành một hướng dẫn toàn diện về Tk hoặc Tkinter. Đối với điều đó, hãy tham khảo một trong những nguồn bên ngoài đã lưu ý trước đó. Thay vào đó, phần này cung cấp định hướng rất nhanh về ứng dụng Tkinter trông như thế nào, xác định các khái niệm Tk cơ bản và giải thích cách cấu trúc trình bao bọc Tkinter

Phần còn lại của phần này sẽ giúp bạn xác định các lớp, phương thức và tùy chọn mà bạn sẽ cần trong ứng dụng Tkinter của mình và nơi tìm tài liệu chi tiết hơn về chúng, bao gồm cả tài liệu tham khảo chính thức về Tcl/Tk

Chương trình Hello World¶

Chúng ta sẽ bắt đầu bằng cách xem qua ứng dụng “Xin chào thế giới” trong Tkinter. Đây không phải là cái nhỏ nhất mà chúng tôi có thể viết, nhưng đủ để minh họa một số khái niệm chính mà bạn cần biết

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6

Sau khi nhập, dòng tiếp theo tạo một thể hiện của lớp

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6, lớp này khởi tạo Tk và tạo trình thông dịch Tcl liên quan của nó. Nó cũng tạo ra một cửa sổ cấp cao nhất, được gọi là cửa sổ gốc, đóng vai trò là cửa sổ chính của ứng dụng

Dòng sau tạo một tiện ích khung, trong trường hợp này sẽ chứa nhãn và nút mà chúng tôi sẽ tạo tiếp theo. Khung vừa với bên trong cửa sổ gốc

Dòng tiếp theo tạo tiện ích nhãn chứa chuỗi văn bản tĩnh. Phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
52 được sử dụng để chỉ định bố cục [vị trí] tương đối của nhãn trong tiện ích khung chứa nó, tương tự như cách các bảng trong HTML hoạt động

Sau đó, một tiện ích nút được tạo và đặt ở bên phải của nhãn. Khi được nhấn, nó sẽ gọi phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
53 của cửa sổ gốc

Cuối cùng, phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
54 đặt mọi thứ trên màn hình và phản hồi đầu vào của người dùng cho đến khi chương trình kết thúc

Khái niệm Tk quan trọng¶

Ngay cả chương trình đơn giản này cũng minh họa các khái niệm Tk chính sau đây

vật dụng

Giao diện người dùng Tkinter được tạo thành từ các widget riêng lẻ. Mỗi widget được biểu diễn dưới dạng một đối tượng Python, được khởi tạo từ các lớp như

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
55,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
56 và
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
57

phân cấp phụ tùng

Các widget được sắp xếp theo thứ bậc. Nhãn và nút được chứa trong một khung, do đó được chứa trong cửa sổ gốc. Khi tạo từng tiện ích con, tiện ích con của nó được chuyển làm đối số đầu tiên cho hàm tạo tiện ích con

Tùy chọn cấu hình

Widget có các tùy chọn cấu hình, giúp sửa đổi giao diện và hành vi của chúng, chẳng hạn như văn bản sẽ hiển thị trong nhãn hoặc nút. Các lớp vật dụng khác nhau sẽ có các bộ tùy chọn khác nhau

quản lý hình học

Widget không tự động được thêm vào giao diện người dùng khi chúng được tạo. Trình quản lý hình học như

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
58 kiểm soát vị trí đặt chúng trong giao diện người dùng

vòng lặp sự kiện

Tkinter phản ứng với đầu vào của người dùng, thay đổi từ chương trình của bạn và thậm chí chỉ làm mới màn hình khi chủ động chạy một vòng lặp sự kiện. Nếu chương trình của bạn không chạy vòng lặp sự kiện, giao diện người dùng của bạn sẽ không cập nhật

Hiểu cách Tkinter kết thúc Tcl/Tk¶

Khi ứng dụng của bạn sử dụng các lớp và phương thức của Tkinter, bên trong Tkinter sẽ tập hợp các chuỗi đại diện cho các lệnh Tcl/Tk và thực thi các lệnh đó trong trình thông dịch Tcl được đính kèm với phiên bản

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6 của ứng dụng của bạn

Cho dù đó là cố gắng điều hướng tài liệu tham khảo, cố gắng tìm phương pháp hoặc tùy chọn phù hợp, điều chỉnh một số mã hiện có hoặc gỡ lỗi ứng dụng Tkinter của bạn, đôi khi sẽ rất hữu ích khi hiểu các lệnh Tcl/Tk cơ bản đó trông như thế nào

Để minh họa, đây là Tcl/Tk tương đương với phần chính của tập lệnh Tkinter ở trên

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0

Cú pháp của Tcl tương tự như nhiều ngôn ngữ shell, trong đó từ đầu tiên là lệnh sẽ được thực thi, với các đối số cho lệnh đó theo sau nó, được phân tách bằng dấu cách. Không đi sâu vào quá nhiều chi tiết, hãy chú ý những điều sau

  • Các lệnh dùng để tạo widget [như

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    70] tương ứng với các lớp widget trong Tkinter

  • Các tùy chọn tiện ích Tcl [như

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    71] tương ứng với các đối số từ khóa trong Tkinter

  • Widget được gọi bằng tên đường dẫn trong Tcl [như

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    72], trong khi Tkinter không sử dụng tên nhưng tham chiếu đối tượng

  • Vị trí của tiện ích trong hệ thống phân cấp tiện ích được mã hóa trong tên đường dẫn [phân cấp] của nó, sử dụng

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    73 [dấu chấm] làm dấu phân cách đường dẫn. Tên đường dẫn cho cửa sổ gốc chỉ là
    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    73 [dấu chấm]. Trong Tkinter, hệ thống phân cấp được xác định không phải theo tên đường dẫn mà bằng cách chỉ định tiện ích mẹ khi tạo từng tiện ích con

  • Các hoạt động được triển khai dưới dạng các lệnh riêng biệt trong Tcl [như

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    58 hoặc
    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    76] được biểu diễn dưới dạng các phương thức trên các đối tượng tiện ích Tkinter. Như bạn sẽ thấy ngay sau đây, vào những thời điểm khác, Tcl sử dụng những gì có vẻ như là các lệnh gọi phương thức trên các đối tượng widget, phản ánh chính xác hơn những gì sẽ được sử dụng trong Tkinter

Làm thế nào để tôi…?

Nếu bạn không chắc chắn cách thực hiện điều gì đó trong Tkinter và bạn không thể tìm thấy nó ngay lập tức trong hướng dẫn hoặc tài liệu tham khảo mà bạn đang sử dụng, thì có một số chiến lược có thể hữu ích

Đầu tiên, hãy nhớ rằng các chi tiết về cách thức hoạt động của từng widget có thể khác nhau giữa các phiên bản khác nhau của cả Tkinter và Tcl/Tk. Nếu bạn đang tìm kiếm tài liệu, hãy đảm bảo tài liệu đó tương ứng với phiên bản Python và Tcl/Tk được cài đặt trên hệ thống của bạn

Khi tìm kiếm cách sử dụng API, sẽ giúp bạn biết tên chính xác của lớp, tùy chọn hoặc phương thức mà bạn đang sử dụng. Xem xét nội tâm, trong trình bao Python tương tác hoặc với

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
77, có thể giúp bạn xác định những gì bạn cần

Để tìm hiểu những tùy chọn cấu hình nào có sẵn trên bất kỳ tiện ích con nào, hãy gọi phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
78 của nó, phương thức này trả về một từ điển chứa nhiều thông tin về từng đối tượng, bao gồm các giá trị mặc định và hiện tại của nó. Sử dụng
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
79 để chỉ lấy tên của từng tùy chọn

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
8

Vì hầu hết các widget đều có nhiều tùy chọn cấu hình chung, nên có thể hữu ích khi tìm ra cái nào dành riêng cho một lớp widget cụ thể. So sánh danh sách các tùy chọn với danh sách của một tiện ích con đơn giản hơn, chẳng hạn như khung, là một cách để thực hiện điều đó

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
6

Tương tự, bạn có thể tìm các phương thức khả dụng cho một đối tượng widget bằng cách sử dụng hàm tiêu chuẩn

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
600. Nếu dùng thử, bạn sẽ thấy có hơn 200 phương thức widget phổ biến, do đó, việc xác định lại những phương thức cụ thể cho một lớp widget là rất hữu ích

import pandas as pd


# 1. Read all HTML tables from a given URL
tables = pd.read_html['//en.wikipedia.org/wiki/Python_[programming_language]']

# 2. Write first table, for example, to the CSV file
tables[0].to_csv['my_file.csv']
5

Điều hướng Hướng dẫn tham khảo Tcl/Tk¶

Như đã lưu ý, hướng dẫn tham khảo lệnh Tk chính thức [trang hướng dẫn] thường là mô tả chính xác nhất về những hoạt động cụ thể trên các widget thực hiện. Ngay cả khi bạn biết tên của tùy chọn hoặc phương pháp mà bạn cần, bạn vẫn có thể có một vài nơi để tìm

Mặc dù tất cả các thao tác trong Tkinter được triển khai dưới dạng các lệnh gọi phương thức trên các đối tượng widget, nhưng bạn đã thấy rằng nhiều thao tác Tcl/Tk xuất hiện dưới dạng các lệnh lấy tên đường dẫn widget làm tham số đầu tiên, theo sau là các tham số tùy chọn, e. g

import pandas as pd


 # Select the only [first] table using indexing [0]
df = pd.read_html['my_file.html'][0]

# Write DataFrame to CSV - no index required
df.to_csv['my_file.csv', index=False]
6

Tuy nhiên, các phương thức khác trông giống như các phương thức được gọi trên một đối tượng tiện ích [thực tế, khi bạn tạo một tiện ích trong Tcl/Tk, nó sẽ tạo một lệnh Tcl với tên của tên đường dẫn tiện ích, với tham số đầu tiên cho lệnh đó là tên

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
7

Trong tài liệu tham khảo Tcl/Tk chính thức, bạn sẽ tìm thấy hầu hết các hoạt động trông giống như lệnh gọi phương thức trên trang hướng dẫn cho một tiện ích con cụ thể [e. g. , bạn sẽ tìm thấy phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
601 trên ttk. trang man của nút], trong khi các chức năng lấy tiện ích con làm tham số thường có trang man của riêng chúng [e. g. , lưới]

Bạn sẽ tìm thấy nhiều tùy chọn và phương pháp phổ biến trong tùy chọn hoặc ttk. các trang man widget, trong khi những trang khác được tìm thấy trong trang man cho một lớp widget cụ thể

Bạn cũng sẽ thấy rằng nhiều phương thức Tkinter có tên ghép, e. g. , ________ 6602, ________ 6603, ________ 6604. Bạn sẽ tìm thấy tài liệu cho tất cả những thứ này trong trang man winfo

Ghi chú

Hơi khó hiểu, cũng có những phương thức trên tất cả các tiện ích Tkinter không thực sự hoạt động trên tiện ích đó mà hoạt động ở phạm vi toàn cầu, không phụ thuộc vào bất kỳ tiện ích nào. Ví dụ là các phương thức truy cập khay nhớ tạm hoặc chuông hệ thống. [Chúng tình cờ được triển khai dưới dạng các phương thức trong lớp cơ sở

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
605 mà tất cả các tiện ích Tkinter kế thừa từ đó]

Mô hình ren¶

Python và Tcl/Tk có các mô hình luồng rất khác nhau, mà

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 cố gắng kết nối. Nếu bạn sử dụng chủ đề, bạn có thể cần lưu ý điều này

Trình thông dịch Python có thể có nhiều luồng liên kết với nó. Trong Tcl, nhiều luồng có thể được tạo, nhưng mỗi luồng có một phiên bản trình thông dịch Tcl riêng được liên kết với nó. Các luồng cũng có thể tạo nhiều hơn một phiên bản trình thông dịch, mặc dù mỗi phiên bản trình thông dịch chỉ có thể được sử dụng bởi một luồng đã tạo ra nó

Mỗi đối tượng

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6 được tạo bởi
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 chứa một trình thông dịch Tcl. Nó cũng theo dõi luồng nào đã tạo trình thông dịch đó. Các cuộc gọi tới
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 có thể được thực hiện từ bất kỳ chuỗi Python nào. Trong nội bộ, nếu một cuộc gọi đến từ một luồng khác với luồng đã tạo đối tượng
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
6, thì một sự kiện sẽ được đăng lên hàng đợi sự kiện của trình thông dịch và khi được thực thi, kết quả sẽ được trả về luồng Python đang gọi

Các ứng dụng Tcl/Tk thường được điều khiển theo sự kiện, nghĩa là sau khi khởi tạo, trình thông dịch sẽ chạy một vòng lặp sự kiện [i. e.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
611] và phản hồi các sự kiện. Bởi vì nó là một luồng, các trình xử lý sự kiện phải phản hồi nhanh chóng, nếu không chúng sẽ chặn các sự kiện khác được xử lý. Để tránh điều này, mọi tính toán chạy dài không được chạy trong trình xử lý sự kiện mà được chia thành các phần nhỏ hơn bằng cách sử dụng bộ hẹn giờ hoặc chạy trong một chuỗi khác. Điều này khác với nhiều bộ công cụ GUI trong đó GUI chạy trong một luồng hoàn toàn riêng biệt với tất cả mã ứng dụng bao gồm cả trình xử lý sự kiện

Nếu trình thông dịch Tcl không chạy vòng lặp sự kiện và xử lý các sự kiện, bất kỳ cuộc gọi

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 nào được thực hiện từ các luồng khác với luồng đang chạy trình thông dịch Tcl sẽ không thành công

Một số trường hợp đặc biệt tồn tại

  • Các thư viện Tcl/Tk có thể được xây dựng để chúng không nhận biết luồng. Trong trường hợp này,

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    0 gọi thư viện từ luồng Python ban đầu, ngay cả khi luồng này khác với luồng đã tạo trình thông dịch Tcl. Khóa toàn cầu đảm bảo chỉ có một cuộc gọi xảy ra tại một thời điểm

  • Mặc dù

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    0 cho phép bạn tạo nhiều hơn một phiên bản của đối tượng
    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    6 [với trình thông dịch riêng của nó], nhưng tất cả các trình thông dịch là một phần của cùng một chuỗi chia sẻ một hàng đợi sự kiện chung, điều này sẽ trở nên xấu xí nhanh chóng. Trong thực tế, không tạo nhiều phiên bản của
    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    6 cùng một lúc. Mặt khác, tốt nhất là tạo chúng trong các luồng riêng biệt và đảm bảo bạn đang chạy bản dựng Tcl/Tk nhận biết luồng

  • Chặn trình xử lý sự kiện không phải là cách duy nhất để ngăn trình thông dịch Tcl nhập lại vòng lặp sự kiện. Thậm chí có thể chạy nhiều vòng lặp sự kiện lồng nhau hoặc bỏ hoàn toàn vòng lặp sự kiện. Nếu bạn đang làm bất cứ điều gì khó khăn khi nói đến các sự kiện hoặc chủ đề, hãy lưu ý những khả năng này

  • Có một vài hàm

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    0 chọn lọc hiện chỉ hoạt động khi được gọi từ luồng đã tạo trình thông dịch Tcl

Tài liệu tham khảo hữu ích¶

Tùy chọn cài đặt¶

Tùy chọn kiểm soát những thứ như màu sắc và độ rộng đường viền của tiện ích con. Các tùy chọn có thể được đặt theo ba cách

Tại thời điểm tạo đối tượng, sử dụng đối số từ khóa

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
5

Sau khi tạo đối tượng, coi tên tùy chọn giống như một chỉ mục từ điển

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
7

Sử dụng phương thức config[] để cập nhật nhiều attr sau khi tạo đối tượng

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
60

Để có giải thích đầy đủ về một tùy chọn nhất định và hành vi của nó, hãy xem các trang hướng dẫn Tk cho tiện ích được đề cập

Lưu ý rằng các trang hướng dẫn liệt kê “TÙY CHỌN TIÊU CHUẨN” và “TÙY CHỌN CỤ THỂ TIỆN ÍCH” cho mỗi tiện ích con. Cái trước là danh sách các tùy chọn chung cho nhiều tiện ích, cái sau là các tùy chọn mang phong cách riêng cho tiện ích cụ thể đó. Tùy chọn tiêu chuẩn được ghi lại trên trang hướng dẫn tùy chọn [3]

Không có sự phân biệt giữa các tùy chọn tiêu chuẩn và tùy chọn cụ thể trong tài liệu này. Một số tùy chọn không áp dụng cho một số loại vật dụng. Việc một tiện ích cụ thể có đáp ứng với một tùy chọn cụ thể hay không tùy thuộc vào loại của tiện ích con;

Các tùy chọn được hỗ trợ bởi một tiện ích nhất định được liệt kê trong trang hướng dẫn của tiện ích đó hoặc có thể được truy vấn trong thời gian chạy bằng cách gọi phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
619 mà không có đối số hoặc bằng cách gọi phương thức
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
79 trên tiện ích đó. Giá trị trả về của các cuộc gọi này là một từ điển có khóa là tên của tùy chọn dưới dạng chuỗi [ví dụ:
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
621] và có giá trị là 5 bộ

Một số tùy chọn, như

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
622 là từ đồng nghĩa với các tùy chọn phổ biến có tên dài [
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
622 là cách viết tắt của “nền”]. Truyền phương thức
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
619, tên của tùy chọn tốc ký sẽ trả về 2-tuple, không phải 5-tuple. 2-tuple được trả lại sẽ chứa tên của từ đồng nghĩa và tùy chọn “thực” [chẳng hạn như
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
625]

Mục lục

Nghĩa

Thí dụ

0

tên tùy chọn

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
621

1

tên tùy chọn để tra cứu cơ sở dữ liệu

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
621

2

lớp tùy chọn để tra cứu cơ sở dữ liệu

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
628

3

giá trị mặc định

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
629

4

giá trị hiện tại

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
630

Thí dụ

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
61

Tất nhiên, từ điển được in sẽ bao gồm tất cả các tùy chọn có sẵn và giá trị của chúng. Điều này chỉ có nghĩa là một ví dụ

Người đóng gói¶

Trình đóng gói là một trong những cơ chế quản lý hình học của Tk. Trình quản lý hình học được sử dụng để chỉ định vị trí tương đối của các tiện ích trong vùng chứa của chúng - trình quản lý chung của chúng. Trái ngược với trình đặt chỉ định rườm rà hơn [được sử dụng ít phổ biến hơn và chúng tôi không trình bày ở đây], trình đóng gói lấy đặc tả mối quan hệ định tính - bên trên, bên trái, điền, v.v. - và xử lý mọi thứ để xác định tọa độ vị trí chính xác

Kích thước của bất kỳ tiện ích chính nào được xác định bởi kích thước của "tiện ích phụ" bên trong. Trình đóng gói được sử dụng để kiểm soát nơi các tiện ích phụ xuất hiện bên trong bản gốc mà chúng được đóng gói. Bạn có thể đóng gói các tiện ích vào các khung và các khung này vào các khung khác để đạt được kiểu bố cục mà bạn mong muốn. Ngoài ra, sự sắp xếp được tự động điều chỉnh để phù hợp với những thay đổi gia tăng đối với cấu hình, sau khi nó được đóng gói.

Lưu ý rằng các vật dụng không xuất hiện cho đến khi chúng được chỉ định hình học với trình quản lý hình học. Một sai lầm phổ biến ban đầu là bỏ qua đặc tả hình học, và sau đó ngạc nhiên khi tiện ích được tạo nhưng không có gì xuất hiện. Một widget sẽ chỉ xuất hiện sau khi nó đã được áp dụng phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
631 của trình đóng gói cho nó chẳng hạn

Phương thức pack[] có thể được gọi với các cặp từ khóa-tùy chọn/giá trị kiểm soát vị trí tiện ích sẽ xuất hiện trong vùng chứa của nó và cách hoạt động của nó khi cửa sổ ứng dụng chính được thay đổi kích thước. Dưới đây là một số ví dụ

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
62

Tùy chọn bộ đóng gói¶

Để biết thêm thông tin chi tiết về trình đóng gói và các tùy chọn mà trình đóng gói có thể thực hiện, hãy xem các trang hướng dẫn và trang 183 trong cuốn sách của John Ousterhout

mỏ neo

loại neo. Biểu thị nơi người đóng gói sẽ đặt mỗi nô lệ vào bưu kiện của mình

mở rộng

Boolean,

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
632 hoặc
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
633

lấp đầy

Giá trị pháp lý. ________ 6634, ________ 6635, ________ 6636, ________ 6637

ipadx và ipady

Khoảng cách - chỉ định phần đệm bên trong ở mỗi bên của tiện ích nô lệ

padx và pady

Khoảng cách - chỉ định phần đệm bên ngoài ở mỗi bên của tiện ích nô lệ

cạnh

Giá trị pháp lý là. ________ 6638, ________ 6639, ________ 6640, ________ 6641

Các biến Widget khớp nối¶

Cài đặt giá trị hiện tại của một số tiện ích [như tiện ích nhập văn bản] có thể được kết nối trực tiếp với các biến ứng dụng bằng cách sử dụng các tùy chọn đặc biệt. Các tùy chọn này là

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
642,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
643,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
644,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
645 và
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
646. Kết nối này hoạt động theo cả hai cách. nếu biến thay đổi vì bất kỳ lý do gì, thì tiện ích được kết nối với nó sẽ được cập nhật để phản ánh giá trị mới

Thật không may, trong triển khai hiện tại của

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0, không thể bàn giao một biến Python tùy ý cho một tiện ích thông qua tùy chọn
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
642 hoặc
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
643. Các loại biến duy nhất mà điều này hoạt động là các biến được phân lớp từ một lớp có tên là Biến, được định nghĩa trong
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0

Có nhiều lớp con hữu ích của Biến đã được định nghĩa.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
651,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
652,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
653 và
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
654. Để đọc giá trị hiện tại của một biến như vậy, hãy gọi phương thức
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
655 trên đó và để thay đổi giá trị của nó, bạn gọi phương thức
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
656. Nếu bạn tuân theo giao thức này, tiện ích sẽ luôn theo dõi giá trị của biến mà bạn không cần can thiệp thêm

Ví dụ

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
63

Trình quản lý cửa sổ¶

Trong Tk có một lệnh tiện ích là

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
657 để tương tác với trình quản lý cửa sổ. Các tùy chọn cho lệnh
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
657 cho phép bạn kiểm soát những thứ như tiêu đề, vị trí, bitmap biểu tượng và những thứ tương tự. Trong
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0, các lệnh này đã được triển khai dưới dạng các phương thức trên lớp
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
660. Các widget cấp cao nhất được phân lớp từ lớp
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
660 và do đó có thể gọi trực tiếp các phương thức
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
660

Để truy cập vào cửa sổ cấp cao nhất có chứa một tiện ích nhất định, bạn thường chỉ cần tham khảo trang chủ của tiện ích. Tất nhiên, nếu tiện ích đã được đóng gói bên trong khung, thì chính sẽ không đại diện cho cửa sổ cấp cao nhất. Để truy cập cửa sổ cấp cao nhất có chứa tiện ích con tùy ý, bạn có thể gọi phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
663. Phương thức này bắt đầu bằng dấu gạch dưới để biểu thị thực tế rằng chức năng này là một phần của quá trình triển khai và không phải là giao diện cho chức năng Tk

Dưới đây là một số ví dụ về cách sử dụng điển hình

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
64

Các loại dữ liệu tùy chọn Tk¶

mỏ neo

Giá trị pháp lý là điểm của la bàn.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
664,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
665,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
666,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
667,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
668,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
669,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
670,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
671, và cả
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
672

bitmap

Có tám bitmap được đặt tên tích hợp sẵn.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
673,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
674,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
675,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
676, ________ 6677, ________ 6678, ________ 6679, ________ 6680. Để chỉ định tên tệp bản đồ bit X, hãy cung cấp đường dẫn đầy đủ tới tệp, trước
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
681, như trong
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
682

boolean

Bạn có thể truyền số nguyên 0 hoặc 1 hoặc chuỗi

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
683 hoặc
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
684

gọi lại

Đây là bất kỳ hàm Python nào không có đối số. Ví dụ

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
65

màu sắc

Màu sắc có thể được đặt dưới dạng tên của X màu trong rgb. txt hoặc dưới dạng chuỗi biểu thị giá trị RGB trong 4 bit.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
685, 8 bit.
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
686, 12 bit.
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
687 hoặc 16 bit. Phạm vi
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
688, trong đó R, G, B ở đây đại diện cho bất kỳ chữ số hex hợp pháp nào. Xem trang 160 cuốn sách của Ousterhout để biết chi tiết

con trỏ

Có thể sử dụng tên con trỏ X tiêu chuẩn từ

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
689 mà không cần tiền tố
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
690. Ví dụ: để lấy con trỏ tay [
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
691], hãy sử dụng chuỗi
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
692. Bạn cũng có thể chỉ định tệp bitmap và mặt nạ của riêng mình. Xem trang 179 cuốn sách của Ousterhout

khoảng cách

Khoảng cách màn hình có thể được chỉ định bằng pixel hoặc khoảng cách tuyệt đối. Các pixel được cho dưới dạng số và khoảng cách tuyệt đối dưới dạng chuỗi, với ký tự ở cuối biểu thị đơn vị.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
693 cho centimet, ________ 6694 cho inch, ________ 6695 cho milimét, ________ 6696 cho điểm máy in. Ví dụ: 3. 5 inch được biểu thị bằng
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
697

nét chữ

Tk sử dụng định dạng tên phông chữ danh sách, chẳng hạn như

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
698. Kích thước phông chữ với số dương được đo bằng điểm;

hình học

Đây là một chuỗi có dạng

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
699, trong đó chiều rộng và chiều cao được đo bằng pixel đối với hầu hết các tiện ích [bằng ký tự đối với các tiện ích hiển thị văn bản]. Ví dụ.
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
00

biện minh

Giá trị pháp lý là các chuỗi.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
01,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
672,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
03 và
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
04

vùng đất

Đây là một chuỗi có bốn phần tử được phân cách bằng dấu cách, mỗi phần tử là một khoảng cách hợp lệ [xem bên trên]. Ví dụ.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
05 và
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
06 và
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
07 đều là các khu vực hợp pháp

sự cứu tế

Xác định kiểu đường viền của widget sẽ là gì. Giá trị pháp lý là.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
08,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
09,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
10,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
11 và
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
12

lệnh cuộn

Đây hầu như luôn là phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
656 của một số tiện ích thanh cuộn, nhưng có thể là bất kỳ phương thức tiện ích nào nhận một đối số duy nhất

bọc

Phải là một trong.

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
14,
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
15 hoặc
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
16

Ràng buộc và sự kiện¶

Phương thức liên kết từ lệnh widget cho phép bạn theo dõi các sự kiện nhất định và kích hoạt chức năng gọi lại khi loại sự kiện đó xảy ra. Hình thức của phương thức liên kết là

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
66

ở đâu

sự phối hợp

là một chuỗi biểu thị loại sự kiện mục tiêu. [Xem trang man bind[3tk] và trang 201 trong cuốn sách của John Ousterhout, Tcl and the Tk Toolkit [ấn bản thứ 2], để biết chi tiết]

chức năng

là một hàm Python, nhận một đối số, được gọi khi sự kiện xảy ra. Một phiên bản Sự kiện sẽ được chuyển thành đối số. [Các chức năng được triển khai theo cách này thường được gọi là gọi lại. ]

cộng

là tùy chọn, hoặc là

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
17 hoặc là
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
18. Chuyển một chuỗi trống biểu thị rằng ràng buộc này sẽ thay thế bất kỳ ràng buộc nào khác mà sự kiện này được liên kết với. Vượt qua một
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
18 có nghĩa là chức năng này sẽ được thêm vào danh sách các chức năng được liên kết với loại sự kiện này

Ví dụ

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
67

Lưu ý cách trường widget của sự kiện đang được truy cập trong cuộc gọi lại

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
20. Trường này chứa tiện ích bắt sự kiện X. Bảng sau đây liệt kê các trường sự kiện khác mà bạn có thể truy cập và cách chúng được biểu thị bằng Tk, có thể hữu ích khi tham khảo các trang hướng dẫn về Tk

TK

Trường sự kiện Tkinter

TK

Trường sự kiện Tkinter

%f

tiêu điểm

%MỘT

than

%h

Chiều cao

%E

gửi_sự kiện

%k

mã khóa

%K

biểu tượng phím

%S

tiểu bang

%N

keysym_num

%t

thời gian

%T

loại hình

%w

bề rộng

%W

phụ tùng

%x

x

%X

x_root

%y

y

%Y

y_root

Chỉ số Tham số¶

Một số tiện ích yêu cầu thông số "chỉ mục" được chuyển. Chúng được sử dụng để trỏ đến một vị trí cụ thể trong tiện ích Văn bản hoặc tới các ký tự cụ thể trong tiện ích Mục nhập hoặc tới các mục menu cụ thể trong tiện ích Menu

Chỉ mục tiện ích mục nhập [chỉ mục, xem chỉ mục, v.v. ]

Tiện ích mục nhập có các tùy chọn đề cập đến vị trí ký tự trong văn bản đang được hiển thị. Bạn có thể sử dụng các hàm

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
0 này để truy cập các điểm đặc biệt này trong tiện ích văn bản

Chỉ mục tiện ích văn bản

Ký hiệu chỉ mục cho các tiện ích Văn bản rất phong phú và được mô tả tốt nhất trong các trang Tk man

Chỉ mục menu [menu. gọi [], trình đơn. entryconfig[], v.v. ]

Một số tùy chọn và phương pháp cho các menu thao tác các mục menu cụ thể. Bất cứ khi nào một chỉ mục menu là cần thiết cho một tùy chọn hoặc một tham số, bạn có thể chuyển vào

  • một số nguyên đề cập đến vị trí số của mục nhập trong tiện ích con, được tính từ đầu, bắt đầu bằng 0;

  • chuỗi

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    22, đề cập đến vị trí menu hiện đang ở dưới con trỏ;

  • chuỗi

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    23 đề cập đến mục menu cuối cùng;

  • Một số nguyên đứng trước

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    681, như trong
    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    25, trong đó số nguyên được hiểu là tọa độ pixel y trong hệ tọa độ của menu;

  • chuỗi

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    14, cho biết hoàn toàn không có mục menu nào, thường được sử dụng nhất với menu. activate[] để hủy kích hoạt tất cả các mục và cuối cùng,

  • một chuỗi văn bản được khớp mẫu với nhãn của mục menu, như được quét từ trên cùng xuống dưới cùng của menu. Lưu ý rằng loại chỉ mục này được xem xét sau tất cả các loại chỉ mục khác, điều đó có nghĩa là các kết quả phù hợp với các mục menu có nhãn

    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    27,
    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    28 hoặc
    ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    29 có thể được hiểu là các chữ ở trên, thay vào đó

Hình ảnh¶

Hình ảnh có định dạng khác nhau có thể được tạo thông qua lớp con tương ứng của

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
30

  • ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    31 cho hình ảnh ở định dạng XBM

  • ttk::frame .frm -padding 10
    grid .frm
    grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
    grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
    
    32 cho hình ảnh ở định dạng PGM, PPM, GIF và PNG. Cái sau được hỗ trợ bắt đầu từ Tk 8. 6

Một trong hai loại hình ảnh được tạo thông qua tùy chọn

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
33 hoặc
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
34 [cũng có sẵn các tùy chọn khác]

Sau đó, đối tượng hình ảnh có thể được sử dụng bất cứ nơi nào tùy chọn

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
35 được hỗ trợ bởi một số tiện ích [e. g. nhãn, nút, menu]. Trong những trường hợp này, Tk sẽ không giữ tham chiếu đến hình ảnh. Khi tham chiếu Python cuối cùng đến đối tượng hình ảnh bị xóa, dữ liệu hình ảnh cũng bị xóa và Tk sẽ hiển thị một hộp trống ở bất cứ nơi nào hình ảnh được sử dụng

Xem thêm

Gói Gối thêm hỗ trợ cho các định dạng như BMP, JPEG, TIFF và WebP, trong số các định dạng khác

Trình xử lý tệp¶

Tk cho phép bạn đăng ký và hủy đăng ký chức năng gọi lại sẽ được gọi từ vòng lặp chính Tk khi có thể thực hiện I/O trên bộ mô tả tệp. Chỉ một trình xử lý có thể được đăng ký cho mỗi bộ mô tả tệp. mã ví dụ

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
68

Tính năng này không khả dụng trên Windows

Vì bạn không biết có bao nhiêu byte để đọc, nên bạn có thể không muốn sử dụng các phương pháp

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
36 hoặc
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
37
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
38 hoặc
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
39, vì những phương pháp này sẽ yêu cầu đọc một số byte được xác định trước. Đối với ổ cắm, các phương pháp
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
40 hoặc
ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
41 sẽ hoạt động tốt;

Tiện ích. tk. createfilehandler[tệp , mặt nạ, func]

Đăng ký chức năng gọi lại trình xử lý tập tin func. Đối số tệp có thể là một đối tượng có phương thức

ttk::frame .frm -padding 10
grid .frm
grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0
grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
43 [chẳng hạn như đối tượng tệp hoặc ổ cắm] hoặc một bộ mô tả tệp số nguyên. Đối số mặt nạ là sự kết hợp ORed của bất kỳ trong ba hằng số bên dưới. Cuộc gọi lại được gọi như sau

Bạn có thể sử dụng tkinter trong HTML không?

Mô-đun tkhtmlview là tập hợp các tiện ích Tkinter có văn bản có thể được đặt ở định dạng HTML . Một tiện ích HTML không phải là một khung trình duyệt web, nó chỉ là một trình phân tích cú pháp HTML đơn giản và nhẹ định dạng các thẻ được sử dụng bởi lớp cơ sở Văn bản Tkinter. Danh sách các thẻ HTML hỗ trợ trong tkhtmlview. một.

Tkinter có dùng được cho website không?

Chúng tôi có thể mở một trang web trong Tkinter bằng chế độ xem web .

Chúng tôi có thể sử dụng HTML và CSS trong tkinter không?

TkinterWeb cung cấp các liên kết cho tiện ích Tkhtml3 từ http. //tkhtml. tcl. tk/tkhtml. html, cho phép tải mã HTML và CSS vào ứng dụng Tkinter . Tất cả các hệ điều hành chính chạy Python 2. 7+ hoặc Python 3+ được hỗ trợ.

Tkinter có phải là GUI duy nhất cho Python không?

Python có rất nhiều khung GUI, nhưng Tkinter là khung duy nhất được tích hợp trong thư viện chuẩn Python .

Chủ Đề