tkinter消息小部件缓解选项不起作用

时间:2014-08-07 10:27:20

标签: python tkinter

所以,我正在用Python创建一个Minesweeper GUI,我不能决定使用Label或Message小部件来实现这些内容。我想为游戏中的每个图块应用浮雕选项'RAISED',但该选项在Message小部件中不起作用。但是,如果我使用Label小部件,则框中的数字不会居中,尽管使用了justify选项,但是浮雕工作正常。如何在Message小部件中使用浮雕?如果不可能,我如何将标签小部件中的文本居中?到目前为止,这是我的代码:

import random

try: # ensures usage of best GUI package on computer
    from tkinter import Tk
    from tkinter import Message
    from tkinter.ttk import *
except ImportError:
    from tkinter import *

class Board:

    def __init__(self, width, height, numBombs):
        self.width = width
        self.height = height
        self.bombs = numBombs
        self.boxlist = []
        for i in range(width * height):
            a = Message(relief = 'raised', justify = 'center')
            a.grid(column = (i + 1) % width, row = (i + 1) // width, ipadx = 15, ipady = 5)
            if i == width * height - 1:
                a.grid(row = 0, column = 0, ipadx = 15, ipady = 5)
            a.bind('<Button-1>', self.reveal)
            self.boxlist.append(a)
        self.reallist = ['0'] * width * height

    def reveal(self, event):
        event.widget['text'] = self.reallist[self.boxlist.index(event.widget)]

a = Board(5, 6, 10)

2 个答案:

答案 0 :(得分:0)

证明= 定义如何对齐多行文本。使用LEFT,RIGHT或CENTER。 请注意,要将文本放置在窗口小部件中,请使用锚点选项。默认为CENTER。 (证明/对齐)

Justify不会改变标签中文本的位置,锚选项会这样做,默认情况下它设置为CENTER,但为什么文本仍然不居中?

当您创建标签并且未使用width =&#34; X&#34;明确指定其宽度时,标签的创建宽度等于其文本的长度,因此没有移动文本的地方。

如果您将自定义宽度设置为大于文本长度,则会注意到文本现在已居中。

采取&#39; |&#39;成为标签的限制:

ttk.Label(root, text="hello world") 
|hello world|

ttk.Label(root, text="hello world", width=17) 
|   hello world   |

答案 1 :(得分:0)

我认为它可能有效,但你没有扩展边界宽度,所以你看不到它。试试看这个明显的效果:

import tkinter
from tkinter import Message
from tkinter import Frame
tk = tkinter.Tk()
root = tk
Frame1 = Frame(root, borderwidth= 50)
Frame1.grid()
mymessage=Message (Frame1, relief='raised',anchor='center', text="test",  bd=20)
mymessage.grid(padx= 20, pady= 20)
root.mainloop()