【问题标题】:tkinter Message widget relief option not workingtkinter 消息小部件救济选项不起作用
【发布时间】:2014-09-30 13:17:36
【问题描述】:

所以,我正在 Python 中创建一个扫雷 GUI,但我无法决定为磁贴使用标签或消息小部件。我想为游戏中的每个图块应用救济选项“RAISED”,但该选项在消息小部件中不起作用。但是,如果我使用 Label 小部件,尽管使用了 justify 选项,但框中的数字不会居中,但救济工作。如何在消息小部件中使用救济?如果不可能,如何在标签小部件中居中文本?到目前为止,这是我的代码:

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)

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    我认为它可能正在工作,但您没有扩展边框宽度,因此您看不到它。试试这个看看明显的效果:

    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()
    

    【讨论】:

      【解决方案2】:

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

      Justify 不会改变标签中文本的位置,锚选项会这样做,并且默认设置为 CENTER,但是为什么你的文本仍然没有居中呢?

      当您创建一个标签并且您没有使用 width="X" 显式指定其宽度时,创建的标签的宽度等于其文本的长度,因此文本无法移动。

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

      取'|'成为标签的界限:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-23
        • 1970-01-01
        • 2017-06-05
        • 1970-01-01
        • 1970-01-01
        • 2015-05-21
        • 2015-08-19
        相关资源
        最近更新 更多