Как я могу указать размеры текстового поля 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)