Укажите размеры текстового поля Tkinter в пикселях

Как я могу указать размеры текстового поля Tkinter с помощью пикселей? Я не пытаюсь изменить размер шрифта, я использую это, чтобы помочь мне масштабировать его до размера окна.

Ответ 1

Вы можете сделать это, поместив его внутри фрейма, заставив фрейм фиксированный размер, отключив распространение размера и настроив запись, чтобы придерживаться границ рамки. Также следует работать с пакетом тоже.

import Tkinter  # tkinter with small t for python 3
#import ttk  # nicer widgets

root = Tkinter.Tk()

mainFrame = Tkinter.Frame(root)
mainFrame.grid()
button = Tkinter.Button(mainFrame, text="dummy")
button.grid()


entryFrame = Tkinter.Frame(mainFrame, width=454, height=20)
entryFrame.grid(row=0, column=1)

# allow the column inside the entryFrame to grow    
entryFrame.columnconfigure(0, weight=10)  

# By default the frame will shrink to whatever is inside of it and 
# ignore width & height. We change that:
entryFrame.grid_propagate(False)
# as far as I know you can not set this for x / y separately so you
# have to choose a proper height for the frame or do something more sophisticated

# input entry
inValue = Tkinter.StringVar()
inValueEntry = Tkinter.Entry(entryFrame, textvariable=inValue)
inValueEntry.grid(sticky="we")


root.mainloop()

Ответ 2

У меня был тот же вопрос, и кажется, что самый простой ответ - создать экземпляр объекта Frame указанного размера, упаковать его, а затем использовать метод place для размещения и размера виджетов внутри него. Я обнаружил, что вызов метода pack_propagate (0) в объекте Frame необязателен.

Вот короткая часть кода, которая иллюстрирует этот метод для нескольких виджетов.

Последний виджет, созданный в этом script, представляет собой виджет текстового окна с размером, указанным в пикселях, в соответствии с вашим вопросом.

from Tkinter import *

root = Tk()
root.title("Fee Fie Foe Fum")
frame=Frame(root, width=300, height=160)
frame.pack()
button1 = Button(frame, text="Mercy!")
button1.place(x=10, y=10, height=30, width=100)
button2 = Button(frame, text="Justice!")
button2.place(x=10, y=50, height=30, width=100)
text1 = Label(text="Verdict:")
text1.place(x=10, y=90)
tbox1 = Text(frame)
tbox1.place(x=10, y=115, height=30, width=200)

root.mainloop()

Это, конечно же, блокирует вас в методе места для проектирования вашего Tkinter UI, но это позволяет вам указывать размеры многих виджетов в пикселях. Последующее использование метода pack на дочерних виджетах перезапишет ваши места размещения и размеры.

Ваш код, вероятно, будет лучше организован, если вы выразите его объектно-ориентированным образом, но этот пример просто показывает последовательность операций, необходимых для выполнения калибровки виджетов в пикселях, а не других единиц.

Ответ 3

Это очень помогло мне:

Вы также можете использовать параметры высоты и ширины, чтобы явно установить размер. Если вы отображаете текст в кнопке, эти параметры определяют размер кнопки в текстовых единицах. Если вместо этого отображать растровые изображения или изображения, они определяют размер в пикселях (или других единицах экрана). Ты можешь укажите размер в пикселях даже для текстовых кнопок, но это требует какая-то магия. Это один из способов сделать это (есть и другие):

f = Рамка (мастер, высота = 32, ширина = 32) f.pack_propagate (0) # не shrink f.pack()

b = Кнопка (f, текст = "Конечно!" ) b.pack(fill = BOTH, expand = 1)

Источник: http://effbot.org/tkinterbook/button.htm

Ответ 4

Так часто я это делаю:

from tkinter import *

class App:
    def __init__(self):
        self.tk = Tk()
        self.canvas = Canvas(self.tk, width = 500, height = 500)
        self.canvas.pack()

Это устанавливает размеры до 500 пикселей в каждом направлении. Когда вы создаете экземпляр этого класса, он отображает окно такого размера. Надеюсь, это поможет!

Ответ 5

Вот как я это сделал. Я поместил размеры объекта Text в тег размещения

    firstname = Text()
    firstname.place(x = 170, y = 20, height = 25, width = 200)

Ответ 6

Высота может быть установлена с помощью configure

var = tk.Text(self)
var.configure(height=1)