2013-06-09 34 views
13

xem xét mã đơn giản này:Tkinter TTK tách sẽ không hiển thị

from Tkinter import * 
import ttk 
root= Tk() 
ttk.Label(root, text='Heading Here').grid(row=1, column=1) 
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5) 
root.mainloop() 

Khi tôi chạy mã này, các dấu phân cách là gần như vô hình.
ttk separator not visible
Tôi đã đánh dấu nó bằng mũi tên màu đỏ, nếu bạn có thể xem nó dưới dạng một dấu chấm nhỏ.

Làm cách nào để làm cho dải phân cách trải rộng toàn bộ chiều rộng ngang hoặc ít nhất là hiển thị?

Trả lời

19

Dấu phân cách có chiều rộng tự nhiên là 1 pixel. Bạn đã nói với nó để dự trữ không gian trên năm cột, nhưng bạn chưa yêu cầu dấu phân tách thực sự lấp đầy năm cột đó. Để giải quyết vấn đề này, hãy cung cấp thuộc tính sticky, cho biết "nếu có nhiều không gian hơn mức cần thiết cho tiện ích này, hãy làm cho các cạnh của tiện ích con" dính "vào các cạnh cụ thể của vùng chứa".

Trong trường hợp này, bạn muốn dấu phân cách dính vào cạnh trái và phải của vùng chứa. Các thuộc tính dính sử dụng điểm của la bàn cho các giá trị, do đó bạn muốn "e" cho đông, và "w" cho Tây:

ttk.Separator(...).grid(..., sticky="ew") 
+0

thanks..solved the issue – oat

0

@ giải pháp sticky Bryan là tốt nhưng nó chỉ giải quyết được một phần của vụ án, kể từ khi phân cách sẽ không bao gồm toàn bộ chiều rộng ngang (mà bạn yêu cầu). Đây là giải pháp thay thế mà bạn có thể áp dụng: Thay vì .grid(), hãy sử dụng bố cục place() và có toàn quyền kiểm soát vị trí, chiều rộng (chiều dài) và thậm chí cả chiều cao của dấu phân cách. Để chỉ áp dụng điều này để các trường hợp hiện tại (w/o bất kỳ tính năng bổ sung) và bao gồm chiều rộng ngang đầy đủ, chỉ cần:

Thay

ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5) 

với

ttk.Separator(root).place(x=0, y=26, relwidth=1) 

Bạn có thể đặt 'y 'như bạn muốn. Cũng lưu ý rằng không cần thiết orient=HORIZONTAL vì đó là tùy chọn mặc định. (Kiểm tra http://effbot.org/tkinterbook/place.htm để biết chi tiết và ví dụ về cách sử dụng bố cục `.option() '.)

Các vấn đề liên quan