Tôi muốn có thể lấy chuỗi ra khỏi phần văn bản được đánh dấu, làm cách nào để tôi thực hiện việc này?Làm cách nào để nhận chuỗi được chọn từ một hộp văn bản Tkinter?
Trả lời
Đối với một widget Tkinter.Text
hoặc Tkinter.Entry
, bạn có thể sử dụng:
content = text.selection_get()
dụ tương tác của việc chọn văn bản cả từ một Entry và từ một widget văn bản trong Python console:
>>> import Tkinter
>>> w = Tkinter.Tk()
>>> e = Tkinter.Entry(w)
>>> e.pack()
>>> t = Tkinter.Text(w)
>>> t.pack()
#(scribble at the widgets in the created window, and select text in the Entry)
>>> e.selection_get()
'1234'
#(select text)
>>> t.selection_get()
'1234'
>>>
Theo nhận xét của Bryan Oakley:
selection_get
là một phương thức widget chung có sẵn cho tất cả các widget. Nó không không phải luôn luôn nhận chuỗi được chọn từ tiện ích Văn bản. Nó có thể, nhưng nó không được bảo đảm. Những gì nó làm là có được những gì được gọi là "X" lựa chọn (từ rễ X11 của tk). Nếu bạn đặtexportselection
thành Sai cho tiện ích Văn bản,selection_get
sẽ không hoạt động. Vì vậy đề xuất của bạn sẽ hoạt động trong trường hợp bình thường, nhưng không phải trong mọi trường hợp.
sử dụng phương thức get
. Nếu bạn muốn văn bản đã chọn sử dụng các chỉ số SEL_FIRST
và SEL_LAST
.
[sửa]] một trong các nhận xét đã suy đoán rằng điều này không hiệu quả với Tkinter vì không có thuộc tính "sel". "sel" không phải là thuộc tính, đó là thẻ. Thẻ là một tính năng mạnh mẽ đáng kể của tiện ích văn bản.
Dưới đây là một ví dụ:
import Tkinter as tk
import tkFont
class App:
def __init__(self):
root=tk.Tk()
self.text = tk.Text(root)
self.text.pack()
self.button = tk.Button(root, text="Get Selection", command=self.OnButton)
self.button.pack()
root.mainloop()
def OnButton(self):
print "selected text: '%s'" % self.text.get(tk.SEL_FIRST, tk.SEL_LAST)
app=App()
Đối với bản demo này để làm việc, gõ một số văn bản trong hộp văn bản sau đó nhấn vào nút.
Tôi thấy không có như vậy "sel" thuộc tính trong văn bản hoặc các widget Entry - có lẽ bạn đang đề cập đến các phương thức có sẵn từ TCL, nhưng được bọc dưới tên khác trong Python? – jsbueno
@jsbueno: 'sel' không phải là thuộc tính. Đó là một thẻ văn bản đại diện cho lựa chọn, và nó có sẵn dưới Tkinter. –
Không cần sử dụng chuỗi cơ bản được xác định bởi Tk. 'Tkinter' có một biến được định nghĩa để truy cập nó -' SEL_FIRST' và 'SEL_LAST'. – ArtOfWarfare
Tiện ích văn bản có thẻ đặc biệt có tên 'sel', có thể truy cập qua Tkinter.SEL và có thể kiểm tra qua text_widget.tag_ranges (Tkinter.SEL), cho phép bạn truy xuất văn bản "đã chọn". Dưới đây là một ví dụ đơn giản:
if textWidget.tag_ranges(Tkinter.SEL):
print('SELECTED Text is %r' % textWidget.get(Tkinter.SEL_FIRST, Tkinter.SEL_LAST))
else:
print('NO Selected Text')
Nếu bạn muốn có một giải pháp nhẹ cao cấp hơn, bạn cũng có thể thử:
ranges = textWidget.tag_ranges(Tkinter.SEL)
if ranges:
print('SELECTED Text is %r' % textWidget.get(*ranges))
else:
print('NO Selected Text')
Plus1 để kiểm tra xem có bất kỳ văn bản nào được chọn để bắt đầu hay không. Nếu không SEL_FIRST/LAST sẽ báo lỗi :-) –
- 1. Làm cách nào để tắt hộp văn bản tùy thuộc vào hộp kiểm được chọn
- 2. Làm cách nào để chọn nhiều đoạn văn bản trong hộp văn bản WPF?
- 3. Làm thế nào để có được dòng được chọn trong một hộp văn bản?
- 4. Làm cách nào để giữ các lựa chọn được tô sáng trong Hộp danh sách tkinter?
- 5. Cách nhận văn bản được chọn từ edittext trong android?
- 6. MVVM-Làm cách nào để chọn văn bản trong hộp văn bản?
- 7. Làm cách nào để nhận được nhiều giá trị đã chọn từ hộp chọn trong JSP?
- 8. C# lấy chuỗi từ hộp văn bản
- 9. Python Tkinter - Cách chèn văn bản vào đầu hộp văn bản?
- 10. Làm thế nào để có được javascript Chọn hộp của văn bản đã chọn
- 11. Trình nghe Tkinter Python trong hộp văn bản
- 12. Nhận văn bản từ DataGridView các ô được chọn
- 13. Làm cách nào để ngăn văn bản được chọn?
- 14. Lấy chuỗi từ một hộp văn bản CVC
- 15. Phát hiện một số văn bản đã được chọn trong một hộp văn bản
- 16. Làm thế nào để có được giá trị của hộp văn bản từ một HTML Coded Chuỗi
- 17. Làm thế nào để nhận được văn bản của một mục được chọn trong một điều khiển chọn?
- 18. Làm cách nào để thay đổi màu của văn bản tùy chọn của hộp chọn?
- 19. Có cách nào để có được điểm chèn trong một hộp văn bản từ javascript?
- 20. Làm thế nào để nhận được giá trị hộp văn bản trong JavaScript
- 21. WPF làm cách nào để tạo một hộp văn bản động và tìm hộp văn bản trên một nút bấm?
- 22. Bỏ chọn văn bản trong hộp văn bản
- 23. Làm cách nào để tìm kiếm văn bản đã chọn?
- 24. Android nhận được văn bản của tất cả các hộp kiểm được chọn trong listView
- 25. nhận văn bản đã chọn từ một uiwebview Xcode
- 26. Làm cách nào để có được các cụm từ phổ biến nhất từ nhiều văn bản?
- 27. Làm cách nào để tạo hộp văn bản làm trường lựa chọn trong django
- 28. Silverlight - làm thế nào để tôi nhận được văn bản của mục đã chọn trong hộp tổ hợp
- 29. Làm thế nào để thay đổi màu Foreground của văn bản được tô sáng cho một Hộp văn bản WPF?
- 30. Làm cách nào để chọn các ký tự không liên tiếp từ một chuỗi văn bản trong MySQL?
Tiện ích văn bản không có phương thức 'selection_get'. –
@BryanOakley: Bạn đang sử dụng phiên bản nào? Tôi đang sử dụng Tkinter đi kèm với Python 2.7, và các widget văn bản của tôi chắc chắn có một 'selection_get'. (Tôi chỉ cố gắng một lần nữa trong một giao diện điều khiển phần chỉ để chắc chắn và nó đã làm việc). – jsbueno
Tôi phải chính xác hơn: chính tiện ích văn bản không có phương thức 'selection_get'. 'selection_get' là một phương thức widget chung có sẵn cho tất cả các widget. Nó không _not_ nhận được chuỗi đã chọn từ một tiện ích văn bản. Nó có thể, nhưng nó không được bảo đảm. Những gì nó làm là có được những gì được gọi là "X" lựa chọn (từ rễ X11 của tk). Nếu bạn đặt 'exportselection' thành False cho tiện ích văn bản,' selection_get' sẽ không hoạt động. Vì vậy đề xuất của bạn sẽ hoạt động trong trường hợp bình thường, nhưng không phải trong mọi trường hợp. –