如何在tkinter标签(例如Microsoft Word居中键入模式)中居中文本[已回答]

时间:2019-06-28 17:41:25

标签: python tkinter text

我正在尝试在tkinter上创建页面到页面的系统,但是从右边开始的文本看起来有些奇怪,如果文本从标签的中心均匀分布,我会更喜欢它。
示例
This is some really cool text
<< Prev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . >> Next
然后成为
. . . . . . . . . . . . .. This is some really cool text
<< Prev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . >> Next

点之所以存在,是因为Stackoverflow不允许有多个空格,因此请忽略这些空格。它看起来应该像Microsoft Word的中心文字
这是我拥有的基本代码,我尝试使用anchor = CENTER,但未按预期工作。抱歉,如果这是基础知识,我是Tkinter的新手

from tkinter import *
introText = ["Some say","That it is","very important","to clean","your hands","Yababababa doooooooo"]
currentPage = 1
def forceSize(main, width, height):
    main.minsize(width, height)
    main.maxsize(width, height)
def storyGUI(textList):
    global currentPage
    textListLength = len(textList)
    def prevPage(main, textLabel):
        global currentPage
        if currentPage != 1:
            textLabel.config(text = introText[currentPage-2])
            main.title("Page "+str(currentPage-1))
            currentPage -= 1
    def nextPage(main, textLabel):
        global currentPage
        if currentPage != textListLength:
            textLabel.config(text = introText[currentPage])
            main.title("Page "+str(currentPage+1))
            currentPage += 1
    storyTK = Tk()
    forceSize(storyTK, 400, 100)
    storyTK.title("Page 1")
    textLabel = Label(storyTK, text = introText[0], font = ("Calibri", 13), anchor = CENTER)
    prevButton = Button(storyTK, text = "<< Prev", command = lambda: prevPage(storyTK, textLabel))
    nextButton = Button(storyTK, text = "Next >>", command = lambda: nextPage(storyTK, textLabel))
    textLabel.place(x = 160, y = 15)
    prevButton.place(x = 30, y = 60)
    nextButton.place(x = 310, y = 60)
    storyTK.mainloop()
#def intro():
storyGUI(introText)

1 个答案:

答案 0 :(得分:2)

tk标签的默认文本在标签内居中,因此这里的问题是标签本身未居中。

位置的原点是最左上角x = 0,y = 0。使用textLabel.place(relx=0.5, y=15, anchor='center')将标签小部件置于主窗口的中心。 relx=0是窗口的左边缘,relx=1.0是窗口的右边缘,因此relx=0.5是窗口的中心。 relx=0.5, y=15表示在窗口中心距窗口顶部15像素处的一点。标签窗口小部件的左边缘位于该点,因此anchor='center'表示您将标签窗口小部件置于该点的中心。