【发布时间】:2018-01-28 10:20:24
【问题描述】:
我终于完成了一个我一直在做的掷骰子程序,我想添加最后一件事:我想添加一个按钮,上面写着“掷骰子”。有没有办法用 Tkinter 按钮运行 Python 脚本?我试过用:
from tkinter import *
master = Tk()
def callback():
CODE HERE
b = Button(master, text="BUTTON TEXT", command=callback)
b.pack()
mainloop()
但是当我使用它时,pygame 窗口只是黑色的。
我的程序的代码是:
exec(open("Dice Crop.py").read(), globals())
from pygame.locals import *
from random import randint
from tkinter import *
import pygame
import sys
pygame.init()
font = pygame.font.SysFont("comicsansms",30)
screen = pygame.display.set_mode((284,177),0,32)
background = pygame.image.load("background.jpg").convert()
one = pygame.image.load("one.png").convert_alpha()
two = pygame.image.load("two.png").convert_alpha()
three = pygame.image.load("three.png").convert_alpha()
four = pygame.image.load("four.png").convert_alpha()
five = pygame.image.load("five.png").convert_alpha()
six = pygame.image.load("six.png").convert_alpha()
counter = 0
while True:
for evt in pygame.event.get():
if evt.type == pygame.QUIT:
pygame.quit()
sys.exit()
screen.blit(background,(0, 0))
if counter < 20:
n = randint(1,6)
counter += 1
if n == 1:
screen.blit(one,(100,50))
screen.blit(font.render("1",True,(0,200,0)),(125,130))
if n == 2:
screen.blit(two,(100,50))
screen.blit(font.render("2",True,(0,200,0)),(125,130))
if n == 3:
screen.blit(three,(100,50))
screen.blit(font.render("3",True,(0,200,0)),(125,130))
if n == 4:
screen.blit(four,(100,50))
screen.blit(font.render("4",True,(0,200,0)),(125,130))
if n == 5:
screen.blit(five,(100,50))
screen.blit(font.render("5",True,(0,200,0)),(125,130))
if n == 6:
screen.blit(six,(100,50))
screen.blit(font.render("6",True,(0,200,0)),(125,130))
if counter < 20:
print(n)
if counter == 20:
print(">",n,"<")
pygame.time.delay(100)
pygame.display.update()
(exec(open("Dice Crop.py").read(), globals()) 所做的只是打开一个 Python 脚本,该脚本使用多个骰子获取一张图像并将其分割成单独的图像。)
【问题讨论】:
-
借助
pygame.Rect及其碰撞检测方法,您可以在pygame 中轻松创建一个非常简单的按钮。你不需要 tkinter。您必须执行另一个 Python 脚本也很奇怪。 pygame 也可以对图像进行切片,如果你想在另一个文件中进行,那么你应该导入切片的图像而不是执行文件。 -
我已经用
pygame.Rect发布了一个解决方案,但我会看看这是否也可以通过 tkinter 实现。但是,我不知道 pygame 和 tkinter 协同工作的效果如何。 -
Here's an answer 向您展示了如何将 pygame 显示嵌入到 tkinter.Frame 中,但它看起来有点奇怪,我宁愿使用其中一个用于 pygame 的 GUI 库(如 SGC ) 或只是一个矩形。
标签: python button tkinter python-3.5