Tôi là người bắt đầu tự học Python, chạy trên hệ điều hành MacOS.Làm cách nào để gắn khóa nhập vào một hàm trong tkinter?
Tôi đang thực hiện một chương trình với một giao diện phân tích cú pháp văn bản trong Tkinter, nơi bạn gõ một lệnh trong một widget Entry
, và nhấn một widget Button
, mà gây nên parse()
funct của tôi, vv, in kết quả cho một widget Text
, phong cách phiêu lưu văn bản.
> Circumvent the button
I can't let you do that, Dave.
Tôi đang cố gắng để tìm một cách để thoát khỏi sự cần thiết để chuyên chở chuột lên đến Button
mỗi khi người dùng đưa ra một lệnh, nhưng điều này hóa ra khó hơn tôi nghĩ.
Tôi đoán mã chính xác trông giống như self.bind('<Return>', self.parse())
? Nhưng tôi thậm chí không biết đặt nó ở đâu. root
, __init__
, parse()
và create_widgets()
không muốn.
Để rõ ràng, lý do duy nhất mà mọi người nên nhấn enter trong prog là kích hoạt parse()
, do đó, nó không cần phải được tán thành tiện ích Entry
cụ thể. Bất cứ nơi nào nó hoạt động là tốt.
Để đối phó với 7stud, định dạng cơ bản:
from tkinter import *
import tkinter.font, random, re
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master, ...)
self.grid()
self.create_widgets()
self.start()
def parse(self):
...
def create_widgets(self):
...
self.submit = Button(self, text= "Submit Command.", command= self.parse, ...)
self.submit.grid(...)
root = Tk()
root.bind('<Return>', self.parse)
app = Application(root)
root.mainloop()
Tôi nhận được một NameError: tự không được định nghĩa, sử dụng 'phân tích cú pháp (tự, sự kiện): ...' và 'root.bind ('', self.parse)', trong khi đó nút lệnh 'của tôi = self.parse' vẫn hoạt động tốt ... –
Ghosty
@Ghosty, tôi đã thêm hai ví dụ khác. – 7stud
Bạn rõ ràng đang sử dụng các lớp trong chương trình của bạn, vì vậy nếu bạn chỉ đăng cấu trúc cơ bản của các lớp của bạn (chúng có thể trống), tôi có thể sửa đổi ví dụ để bạn làm việc trong một thiết lập lớp. – 7stud