Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter消息小部件释放选项不工作_Python_Tkinter - Fatal编程技术网

Python tkinter消息小部件释放选项不工作

Python tkinter消息小部件释放选项不工作,python,tkinter,Python,Tkinter,所以,我正在用Python创建一个扫雷GUI,我不能决定使用标签或消息小部件。我想为游戏中的每个磁贴应用救济选项“提升”,但该选项在消息小部件中不起作用。但是如果我使用标签小部件,框中的数字不会居中,尽管使用了justify选项,但是relief可以工作。如何在Message小部件中使用relief?如果不可能,如何在标签小部件中居中显示文本?以下是我目前的代码: import random try: # ensures usage of best GUI package on compute

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

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)
随机导入
try:#确保在计算机上使用最佳GUI软件包
从tkinter导入Tk
从tkinter导入消息
从tkinter.ttk导入*
除恐怖外:
从tkinter进口*
班级委员会:
定义初始值(自身、宽度、高度、数量):
self.width=宽度
自我高度=高度
self.bombs=numBombs
self.boxlist=[]
对于范围内的i(宽度*高度):
a=消息(释压='raised',调整='center')
a、 网格(列=(i+1)%width,行=(i+1)//width,ipadx=15,ipady=5)
如果i==宽度*高度-1:
a、 栅格(行=0,列=0,ipadx=15,ipady=5)
a、 绑定('',自我揭示)
self.boxlist.append(a)
self.reallist=['0']*宽度*高度
def显示(自身、事件):
event.widget['text']=self.reallist[self.boxlist.index(event.widget)]
a=电路板(5、6、10)
证明= 定义如何对齐多行文本。使用LEFT、RIGHT或CENTER请注意,要在小部件中定位文本,请使用锚定选项。默认值为中间值。(证明/证明)

“对齐”不会更改文本在标签中的位置,“锚定”选项会更改该位置,并且默认情况下将其设置为“中心”,但如果文本仍然未居中,为什么要这样做

创建标签时,如果没有使用width=“X”明确指定其宽度,则创建的标签的宽度等于其文本的长度,因此文本没有移动的位置

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

将“|”作为标签的限制:

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

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

我认为这可能是工作,但你没有扩大边界宽度,所以你不能看到它。尝试以下方法可以看到明显的效果:

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