【问题标题】:Why isn't the tkinter button showing up on the screen?为什么 tkinter 按钮没有出现在屏幕上?
【发布时间】:2019-08-04 21:41:03
【问题描述】:

我正在制作一个游戏,屏幕上的第一件事是一个按钮,上面写着玩游戏。但是由于某种原因,该按钮没有显示在屏幕上?函数 play_sound_game 基本上是我的代码的其余部分。

我已经尝试删除turtle.mainloop() 但这也不起作用。

    import turtle
    import tkinter as tk
    import time
    import pygame

    screen = turtle.Screen()

    turtle.ht()
    screen.bgcolor("blue")
    turtle.color('deep pink')
    style = ('Courier', 80, 'italic')
    turtle.pu()
    turtle.goto(-318,176)
    turtle.pu
    turtle.write('RHYMING WORDS', font=style)
    turtle.hideturtle()


    turtle.mainloop()


    #Button for play game
    button_playgame = tk.Button(canvas.master, text="Play Game", command=play_sound_game, font=('Arial', '65',"bold"), foreground = 'red')

    button_playgame.config(height = -1, width = 4)
    canvas.create_window(272, 88, window=button_playgame)

我没有收到任何错误消息。

【问题讨论】:

  • 你还没有渲染按钮(.pack, .grid, .place)also...height = -1?
  • 那我要改什么
  • 你能告诉我我必须在我的代码中替换什么才能让它工作吗?这真的很有帮助,我知道 Tkinter 是如何工作的
  • 如果你知道 Tkinter 是如何工作的,那么你就不会遇到这个问题了,哈哈。就像我的第一条评论建议的那样,你必须放置小部件......但既然你知道 tkinter 是如何工作的......
  • 查看并运行stackoverflow.com/a/44654017/4180176 - 这可能会对您有所帮助

标签: python tkinter pygame turtle-graphics


【解决方案1】:

turtle 使用来自模块tkinter 的小部件Canvas。要添加按钮,您必须访问此画布

canvas = screen.getcanvas()

然后你就可以在

中使用了
tk.Button(canvas.master, ...)

canvas.create_window(...)

因为turtle.mainloop() 一直运行直到您关闭窗口,所以您必须在mainloop() 之前创建按钮

工作示例。

import turtle
import tkinter as tk

def play_sound_game():
    pass

screen = turtle.Screen()

turtle.ht()
screen.bgcolor("blue")
turtle.color('deep pink')
style = ('Courier', 80, 'italic')
turtle.pu()
turtle.goto(-318,176)
turtle.pu
turtle.write('RHYMING WORDS', font=style)
turtle.hideturtle()

canvas = screen.getcanvas()

button_playgame = tk.Button(canvas.master, text="Play Game", command=play_sound_game, font=('Arial', '65',"bold"), foreground='red')
#button_playgame.config(height=1, width=4)

canvas.create_window(272, 88, window=button_playgame)

turtle.mainloop()

在 Linux 上

【讨论】:

  • 还有一个问题。是否可以更改按钮的背景颜色?
  • 是的,background="blue" 或更短的bg="blue"。使用十六进制代码 (#RRGGBB) bg="#FF00DD"。文档:Button
  • 按钮颜色保持白色
  • 在 Linux 上它将颜色变为蓝色。仅当鼠标悬停在按钮(悬停)上时它是白色的 - 但按钮有其他选项可以更改它。如果您使用其他系统然后是 Linux,那么您的系统可能不允许更改它。
  • 是的,我可能正在使用 mac
猜你喜欢
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 2011-08-04
  • 1970-01-01
相关资源
最近更新 更多