Tôi đang cố gắng tạo một mạng lưới các nút (để đạt được hiệu ứng ô có thể nhấp) với Tkinter.Làm thế nào để tạo ra một lưới tự thay đổi kích thước của các nút trong tkinter?
Vấn đề chính của tôi là tôi không thể thực hiện grid
và các nút tự động và phù hợp với cửa sổ chính.
Ví dụ: khi tôi có số lượng nút lớn trên lưới, thay vì thu hẹp các nút sao cho lưới vừa với cửa sổ, tôi sẽ có khung kéo dài tắt màn hình.
Hiệu ứng mà tôi đang tìm kiếm là lưới điền tất cả không gian có sẵn, sau đó thay đổi kích thước ô của nó để vừa với không gian đó. Tôi đã đọc tài liệu, nhưng tôi vẫn không thể tìm ra cách để nó hoạt động.
Đây là mã cơ bản đó là điểm khởi đầu của tôi:
def __init__(self):
root = Tk()
frame = Frame(root)
frame.grid()
#some widgets get added in the first 6 rows of the frame's grid
#initialize grid
grid = Frame(frame)
grid.grid(sticky=N+S+E+W, column=0, row=7, columnspan=2)
#example values
for x in range(60):
for y in range(30):
btn = Button(grid)
btn.grid(column=x, row=y)
root.mainloop()
Cảm ơn! Điều đó làm việc tuyệt vời. Tôi không chắc tại sao tôi không tìm thấy lớp Grid. Tôi đã đọc vào tài liệu quản lý hình học, nhưng chỉ phát hiện ra phương thức .grid. – Kiril
Ví dụ của bạn không có các nút mở rộng khi bạn thay đổi kích thước trên hệ thống của tôi. Tôi đang sử dụng Xubuntu 14.04, 32 bit. Tôi đã thử nó trên cả Python 2.x và 3.x. – Shule
Ví dụ rất hữu ích. @Kiril - bạn cũng có thể gọi columnconfigure từ tham chiếu đối tượng, ví dụ: root.rowconfigure (0, weight = 1) – NargothBond