带有Python GUI中字段的按钮

时间:2017-05-04 22:46:49

标签: python user-interface tkinter

你可能熟悉或不熟悉一款名为“狼人”的流行派对游戏 - 游戏的细节在这里并不重要,但我正在尝试制作一个程序来决定团队。

我有以下代码非常简单 - 它包含3个方法,我希望附加到按钮,然后在程序运行时显示在窗口中。

代码如下所示:

from Tkinter import *
from random import randint # import random integer generator
playerList = []
numberOfWolves = 0

def setWolfNumber(x):
    numberOfWolves = x
def listAdd(string):
    playerList.append(string)

def chooseTeams():

    werewolves = [] # list of wolves, populated later for printing
    villagers = [] # same as wolves but for villiagers
    for x in range(0,len(playerList)): # loop for the number of players. Each iteration chooses a random player and decides whether they're a werewolf or not. After 2 werewolves it just adds villagers.

        random = randint(0,len(playerList)-1)
        player = playerList[random]
        decide = randint(0,1)
        if decide == 0 and len(werewolves) < numberOfWolves:
            werewolves.append(player)
        else:
            villagers.append(player)
        playerList.remove(player)

    for wolf in werewolves: #prints wolf names
        print  wolf +  " is a werewolf"

    seer = villagers[randint(0,len(villagers))-1] #decide seer, print that, make sure they won't be reprinted with villagers
    villagers.remove(seer)
    print seer + " is the seer"

    doctor = villagers[randint(0,len(villagers))-1] #same as seer but with the doctor
    villagers.remove(doctor)
    print doctor + " is the doctor"

    for villager in villagers: # print villagers
        print villager + " is a villager"

top = Tk()
top.wm_title("Werewolves Team Chooser")
w = Button(top)
top.mainloop()

我相信你可以看到,GUI的代码非常不完整。有人可以告诉我如何在GUI中显示字段,并将它们附加到按钮?实际上,我正在寻找的是一个用于添加玩家的领域,以及一个用于设置狼人数量的领域;然后一个按钮获取该信息并决定团队 - 使用提供的方法。

非常感谢任何帮助。

奖励:将成品变成可执行文件会有多难,所以我的朋友也可以使用它?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您的按钮没有显示,因为您没有在其上调用包。基本上,您创建了一个按钮,但尚未将其添加到窗口中。您可以使用三种布局管理器来添加&#34;小部件&#34; (Tkinter在GUI中的名称)。这些是包,网格和地方。对于一个简单的窗口,例如你正在制作的窗口,包应该可以正常工作。当你做更大的后期项目时,网格成为一个非常有用的工具。在创建按钮后将w.pack()添加到代码中,您将看到该按钮没有名称。你可以通过添加text =&#34;一些文字&#34;来添加它。到构造函数中的参数。类似地,您可以使用callback = function向该按钮添加一个动作(注意缺少括号)并将其绑定到一个动作。您还可以创建&#34;字段&#34;类似于你制作按钮的方式。简单地使用Entry()代替并填充您需要的参数(我建议查找StringVar以获取有关检索输入的信息)。

从最终项目中制作一个exe文件太糟糕了。就个人而言,我喜欢使用PyInstaller,它使用你的脚本名称和一些参数,并为你创建整个事物。还有其他工具,如py2exe,可以做同样的事情。

祝你好运! (P.S.真棒游戏,希望它顺利!)