在侧面打包文本小部件不起作用

时间:2018-03-16 07:31:05

标签: python python-2.7 layout tkinter

我是的新手。我尝试在Text左侧创建一个0,0小部件,但它显示在中间,就像默认pack()一样。

这是我的代码:

from Tkinter import *


# the ui of the main window
class Ui(object):
    # the init of the client object
    def __init__(self):
        self.root = Tk()
        self.mid_height = self.root.winfo_screenheight() / 2
        self.mid_width = self.root.winfo_screenwidth() / 2
        self.root.title("Journey-opening")
        self.root.geometry("600x600+{}+{}".format(self.mid_width - 300, self.mid_height - 300))
        self.root.resizable(width=0, height=0)
        self.cyan = "#0990CB"
        self.root["background"] = self.cyan
        self.frame = Frame(self.root)
        self.frame.pack()
        self.chat_box = Text(self.frame, height=30, width=50)
        self.chat_box.pack(side=LEFT)

    def open(self):
        self.root.mainloop()

wins = Ui()
wins.open()

我也尝试使用grid方法,但它没有改变任何东西,还创建了另一个小部件,因为它可能至少需要2个小部件。

我想我的框架有些东西,但我遵循教程,一切都很好。

1 个答案:

答案 0 :(得分:3)

  

"在旁边打包文本小部件"

不正确self.chat_box.pack(side=LEFT) Text小部件打包到一边。它只是在 {/ 1>}内完成 文本小部件)默认情况下。所以在某种程度上,self.frame窗口小部件被打包,不仅仅是向左,而是所有方面

为了让左上角有Text,你应该让frame占用比所需更多的空间,在这种情况下,它可以简单地占用x-中的所有空间其父级(self.chat_box)内的轴。为此,请替换:

self.root

使用:

self.frame.pack()