2012-03-29 35 views
8

Điều này có vẻ như một câu hỏi ngớ ngẩn, nhưng có thể thay đổi chiều cao của nút ttk theo cách thủ công không?Thay đổi chiều cao nút ttk bằng Python

Thứ gì đó giống như button = tkinter.Button(frame, text='hi', width=20, height=20...) hoạt động tốt cho nút tkinter. Mặc dù tôi muốn sử dụng một nút ttk vì nó trông đẹp hơn nhiều về mặt thẩm mỹ.

button = ttk.Button(frame, text='hi', width=20, height=20...) không hoạt động, chiều cao dường như không phải là tùy chọn hợp lệ. Tôi đã thử thiết lập nó với cấu hình hoặc tìm kiếm các yếu tố trong phong cách để thay đổi và đã không có bất kỳ may mắn.

Có giải pháp đơn giản nào cho điều này không? Tôi đang sử dụng Python 2.7, Windows cho bản ghi. Xin lỗi, điều này có vẻ giống như một câu hỏi tầm thường nhưng tôi đã nhìn xung quanh mà không có nhiều may mắn.

Trả lời

5

Để trả lời trực tiếp câu hỏi của bạn, không, bạn không thể thực hiện việc này. Toàn bộ các điểm của các nút theo chủ đề là cung cấp một kích thước đồng nhất.

Điều đó đang được nói, có rất nhiều chỗ cho suy nghĩ vượt trội. Ví dụ, bạn có thể đóng gói nút vào một khung hình, biến hình học tuyên truyền ra trên khung (do đó kích thước của khung điều khiển kích thước của nút thay vì ngược lại), sau đó thiết lập kích thước của khung để bất cứ điều gì bạn muốn.

Hoặc, thử đặt hình ảnh trong suốt lên nút có chiều cao bạn muốn, sau đó sử dụng tùy chọn compound để phủ nhãn lên hình ảnh vô hình.

Hoặc, tạo chủ đề tùy chỉnh sử dụng đệm để có kích thước bạn muốn.

Cuối cùng, bạn có thể đặt nút trong lưới, đặt nút "dính" ở tất cả các cạnh, sau đó đặt chiều cao tối thiểu cho hàng đó.

Tất nhiên, nếu bạn đang sử dụng OSX, tất cả cược sẽ bị tắt - thực sự là muốn đặt các nút ở kích thước cụ thể.

+0

Tuyệt vời, những tất cả dường như mạnh ial làm việc tốt xung quanh. Cảm ơn bạn. – user1301039

+0

Liệu việc vô hiệu hóa truyền hình học và gắn bó vào một khung làm việc với lưới điện, phải không? Tôi đã thử nó một lần, nhưng không thể làm cho nó chơi đẹp. Có thể cần phải thử một lần nữa. – Kumba

+0

@Kumba: lưới và gói không khác nhau về vấn đề này - khi bạn tắt tính năng truyền hình học, kích thước của tiện ích con không ảnh hưởng đến kích thước của tiện ích con chứa. –

2

Chỉ cần một ví dụ, như @Bryan nói: "Ví dụ, bạn có thể đóng gói vào nút vào một khung", tôi đã làm điều đó như thế này:

import Tkinter as tk 
import ttk 

class MyButton(ttk.Frame): 
    def __init__(self, parent, height=None, width=None, text="", command=None, style=None): 
     ttk.Frame.__init__(self, parent, height=height, width=width, style="MyButton.TFrame") 

     self.pack_propagate(0) 
     self._btn = ttk.Button(self, text=text, command=command, style=style) 
     self._btn.pack(fill=tk.BOTH, expand=1) 
0

này đã làm việc cho tôi:

my_button = ttk.Button(self, text="Hello World !") 
my_button.grid(row=1, column=1, ipady=10, ipadx=10) 

nơi ipadyipadx thêm pixel bên trong nút không giống như padypadx mà thêm pixel bên ngoài của nút

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