当前位置: 首页 > 知识库问答 >
问题:

Tkinter使按钮移动到两侧的文本

隆康平
2023-03-14

我试图在Tkinter中创建一个TicTacToe游戏,我试图把一个标签放在棋盘的按钮下,但是当我把标签放在按钮下时,按钮会移动到一边。这是我的代码:

    from tkinter import *
    from tkinter import messagebox
    root = Tk()
    root.title('TicTacToe')
    # X starts
    clicked = True
    count = 0
    #button clicked function
    def b_click(b):
        global clicked
        global count
        
        if b["text"] == " " and clicked == True:
            b["text"] = "X"
            clicked = False
            count += 1
        elif b["text"] == " " and clicked == False:
            b["text"] = "O"
            clicked = True
            count += 1
        else:
            messages["text"] = "you cant do that"
            
    #build the buttons
    b1 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b1))
    b2 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b2))
    b3 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b3))
    b4 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b4))
    b5 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b5))
    b6 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b6))
    b7 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b7))
    b8 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b8))
    b9 = Button(root, text=" ", font =("Helvetica", 20), height=3, width=6, bg="SystemButtonFace", command= lambda:b_click(b9))
    messages  = Label(root, text="", font =("Helvetica", 20), height=1, width=15, relief="sunken")
    space = Label(root, text="", font =("Helvetica",))
    #display the buttons
    b1.grid(row=0, column=0)
    b2.grid(row=0, column=1)
    b3.grid(row=0, column=2)
    
    b4.grid(row=1, column=0)
    b5.grid(row=1, column=1)
    b6.grid(row=1, column=2)
    
    b7.grid(row=2, column=0)
    b8.grid(row=2, column=1)
    b9.grid(row=2, column=2)
    space.grid(row=3, column=0)
    messages.grid(row=4, column=1)
    
    root.mainloop()

共有1个答案

简景焕
2023-03-14

当您尝试在按钮下面添加标签时,如果您不指定列跨度,标签将占据整个单元格,所以发生的是标签比按钮宽,因为它占据了所有的单元格,按钮转到了侧面,所以如果你这样说:

...
space.grid(row=3, column=0)
messages.grid(row=4, column=0, columnspan=3)

root.mainloop()

您正在告诉tkinter您的标签占用了三列,因此它不再移动按钮。结果如下:

 类似资料:
  • 问题内容: 我想生成大量的Tkinter ,它们可以做不同的事情。我有以下代码: 如果为5,尽管我得到标记为的按钮,但单击它们时都可以。 我需要第一个按钮执行,第二个按钮执行,依此类推。 问题答案: 我认为问题在于,循环结束后,会获取的最终值。这应该解决(未测试): 更新资料 顺便说一句,这是通过在函数中添加一个自变量的默认值来实现的,该默认值是根据在循环中创建每个变量时的值计算得出的,而不是在稍

  • 本文向大家介绍Python | Tkinter中的文本区域和按钮,包括了Python | Tkinter中的文本区域和按钮的使用技巧和注意事项,需要的朋友参考一下 库: Tkinter Tkinter(Tk interface)是一个标准python库,用于创建简单,快速和简单的GUI应用程序。 下载Tkinter: 在本教程中,我们将创建一个标签和文本区域,并从文本区域中提取文本,然后我们将看到

  • Button 控件是 Tkinter 中常用的窗口部件之一,同时也是实现程序与用户交互的主要控件。通过用户点击按钮的行为来执行回调函数,是 Button 控件的主要功用。首先自定义一个函数或者方法,然后将函数与按钮关联起来,最后,当用户按下这个按钮时,Tkinter 就会自动调用相关函数。 按钮控件使用起来非常简单,它同样可以包含文本、图像、位图,并通过 参数回调函数。当然按钮也并非一定要执行回调

  • 问题内容: 我正在尝试创建使用此lambda函数单击的按钮的列表: 似乎有点工作,但它会立即打印按钮文本,即它不等待用户单击按钮。 关于如何使其对按钮单击做出响应的任何想法? 问题答案: 试图在lambda中完成所有这些操作是错误的方法。简直太令人困惑了,即使不是不可能做您想做的事情。而是创建一个可以完成工作的方法,并仅将lambda用作调用该函数的一种方式:

  • 问题内容: 我试图做到这一点,以便当用户单击一个按钮时,它变为“ X”或“ 0”(取决于他们的团队)。如何使按钮上的文本更新?到目前为止,我最好的主意是删除按钮,然后再次打印它们,但这只能删除一个按钮。这是我到目前为止的内容: 问题答案: 就像您的标签一样,按钮小部件也有一个选项。您可以用来更新按钮。最小示例:

  • 问题内容: 当我尝试使用复选按钮时,它可以正常工作,但文本不会出现。我不明白为什么。下面是我的代码 出现复选框,但旁边的文本没有 问题答案: 尝试使用主题的tk(ttk)检查按钮小部件:

  • 问题内容: 我是编码的新手,只是学习Python。我搜索了答案,但找不到答案。 我正在尝试制作一个用于学习目的的计算器,但无法使底部扩展或内部扩展以匹配根窗口的边界 这是我的代码: 这是我的计算器当前的图像: 如何制作和调整大小以匹配根窗口的边框? 问题答案: 问题 :Tkinter按钮使用网格扩展 TkDocs:网格几何管理器处理大小调整 您只配置增长: 如果有多余的空间 ,您还必须配置框架以使

  • 我有这个浮动动作按钮(GitHub链接),当我打开一个(软件)键盘时,浮动动作按钮隐藏在键盘后面。