指定Tkinter文本框的尺寸(以像素为单位)

xxm*_*exx 14 python tkinter

如何使用像素指定Tkinter文本框的尺寸?我不是想改变字体大小,我用它来帮助我将它缩放到窗口的大小.

Gon*_*nzo 7

您可以通过将其放在框架内来执行此操作,通过停用大小传播并将条目配置为粘贴到框架边框来强制框架为固定大小.也应该以类似的方式与pack一起工作.

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()
Run Code Online (Sandbox Code Playgroud)

  • 很难看出哪个部分是这个答案的关键 (3认同)

小智 5

我有同样的问题,似乎最简单的答案是实例化指定大小的 Frame 对象,将其打包,然后使用 place 方法在其中放置和调整小部件的大小。我发现在 Frame 对象上调用 pack_propagate(0) 方法是不必要的。

这是一小段代码,它在几个小部件上举例说明了这种方法。

根据您的问题,此脚本中实例化的最后一个小部件是一个文本框小部件,其大小以像素为单位。

from Tkinter import * #For python 3 use: 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()
Run Code Online (Sandbox Code Playgroud)

当然,这确实会将您锁定在用于设计 Tkinter UI 的 place 方法中,但它确实允许您以像素为单位指定许多小部件的尺寸。随后在子小部件上使用 pack 方法将覆盖您的展示位置和大小。

如果您以面向对象的方式表达它,您的代码可能会被更好地组织起来,但是这个例子只是展示了完成以像素而不是其他单位调整小部件大小所需的操作序列。


erd*_*ser -3

这是我经常这样做的方式:

from tkinter import *

class App:
    def __init__(self):
        self.tk = Tk()
        self.canvas = Canvas(self.tk, width = 500, height = 500)
        self.canvas.pack()
Run Code Online (Sandbox Code Playgroud)

这会将每个方向的尺寸设置为 500 像素。当您创建此类的实例时,它会显示一个此大小的窗口。希望这可以帮助!

  • 这是一个“画布”——“文本”框小部件接受以字符为单位的大小,我相信如果您想要像素,这使得它变得不那么容易...... (9认同)