Python 如何将Tkinter GUI按钮指向子程序?
我有这个exe文件,可以运行战舰游戏。独立地,它工作得很好,但是当我把它的代码放在def Zeeslag中时,它不会被执行。有一个按钮,其命令指向此def,但当您单击它时,不会发生任何事情! 正如你可能看到的,我是一个非常有经验的程序员。请帮忙Python 如何将Tkinter GUI按钮指向子程序?,python,tkinter,interface,Python,Tkinter,Interface,我有这个exe文件,可以运行战舰游戏。独立地,它工作得很好,但是当我把它的代码放在def Zeeslag中时,它不会被执行。有一个按钮,其命令指向此def,但当您单击它时,不会发生任何事情! 正如你可能看到的,我是一个非常有经验的程序员。请帮忙 from Tkinter import * root = Tk() root.wm_title("Minigames") root.config(background = "#4FAC8D") #zeegroen def Zeeslag():
from Tkinter import *
root = Tk()
root.wm_title("Minigames")
root.config(background = "#4FAC8D") #zeegroen
def Zeeslag():
from random import randint
board = [] #dit is het bord
for x in range(5): #maakt een rij in het spelbord
board.append(["O"] * 5)
def print_board(board): #voegt de rijen samen
for row in board:
print " ".join(row)
print "Laten we zeeslag spelen!"
print "Er zitten 3 boten van 1 vakje lang verborgen."
print "Je hebt 10 beurten om te raden waar hij zit."
print_board(board)
def random_row(board): #bepaalt y cor
return randint(1, len(board[0])) #het bord is 5 bij 5
def random_col(board): #bepaalt x cor
return randint(1, len(board[0]))
ship1_row = random_row(board) #maakt schip 1 aan
ship1_col = random_col(board)
ship2_row = random_row(board) #maakt schip 2 aan
ship2_col = random_col(board)
ship3_row = random_row(board) #maakt schip 3 aan
ship3_col = random_col(board)
"""" om te testen:
print str(ship1_row) +' ' + str(ship1_col)
print str(ship2_row) +' ' + str(ship2_col)
print str(ship3_row) +' ' + str(ship3_col) """
boats_hit=0 #je moet in totaal 3 boten raken
for turn in range(10): #10 beurten
print "Beurt "+ str(turn+1)
guess_row = int(raw_input("Raad de rij:"))
guess_col = int(raw_input("Raad de kolom:"))
if guess_row == ship1_row and guess_col == ship1_col or guess_row == ship2_row and guess_col == ship2_col or guess_row == ship3_row and guess_col == ship3_col :
print "Gefeliciteerd! Je hebt er een geraakt!"
board[guess_row-1][guess_col-1]= "G"
boats_hit +=1
print_board(board)
if boats_hit==3: #als je ze alle 3 hebt gevonden
print 'Je hebt gewonnen'
break
elif(guess_row < 1 or guess_row > 5) or (guess_col < 1 or guess_col > 5): #controle
print "Oeps, dat zit niet op het spelbord."
elif(board[guess_row-1][guess_col-1] == "X"): #herhaling vermijden
print "Dat heb je al eerder ingevoerd."
else:
print "Fout!"
board[guess_row-1][guess_col-1] = "X" #foute poging
print_board(board)
if turn == 9:
print "Einde Spel. Ze zaten hier!"
board[ship1_row-1][ship1_col-1]= "S" #zet S neer op de plekken van de boten
board[ship2_row-1][ship2_col-1]= "S"
board[ship3_row-1][ship3_col-1]= "S"
print_board(board)
mainFrame = Frame(root, width=200, height = 600)
mainFrame.grid(row=0, column=0, padx=10, pady=2)
mainFrame.config(background="#246952")
Label(mainFrame, text="Kies welk spel je wilt spelen ").grid(row=0, column=0, padx=10, pady=2)
btnFrame = Frame(mainFrame, width=200, height = 200)
btnFrame.grid(row=0, column=1, padx=10, pady=2)
zeeslagBtn = Button(btnFrame, text="Zeeslag", command=Zeeslag)
zeeslagBtn.grid(row=0, column=0, padx=10, pady=2)
root.mainloop()
从Tkinter导入*
root=Tk()
root.wm_标题(“小游戏”)
root.config(background=“#4FAC8D”)#zeegroen
def Zeeslag():
从随机导入randint
董事会=[]董事会成员
对于范围(5)中的x:#在het spelbord中的maakt een rij
董事会追加([“O”]*5)
def打印板(板):#voegt de rijen samen
对于板中的行:
打印“”连接(行)
打印“Laten we zeeslag spelen!”
打印“Er Ziten 3 boten van 1 vakje lang verborgen”
打印“我很高兴10岁时长青春痘。”
印刷电路板
def random_行(板):#bepaalt y cor
return randint(1,len(board[0])#其bord为5 bij 5
def random_col(董事会):#bepaalt x cor
返回randint(1,len(板[0]))
ship1_行=随机行(板)#maakt schip 1 aan
ship1_col=随机_col(板)
第2排=随机第2排(板)
ship2_col=随机_col(板)
第3排=随机第3排(板)
ship3\u col=随机_col(板)
“”om te testen:
打印str(ship1_行)+''+str(ship1_列)
打印str(ship2_行)+''+str(ship2_列)
打印str(ship3_行)+''+str(ship3_列)“”
船只命中率=0#我在博滕拉肯3号码头移动
对于交车范围(10):#10贝乌滕
打印“Beurt”+str(回合+1)
猜测行=int(原始输入(“Raad de rij:”)
guess\u col=int(原始输入(“Raad de kolom:”)
如果guess\u row==ship1\u row和guess\u col==ship1\u col或guess\u row==ship2\u row和guess\u col==ship2\u col或guess\u row==ship3\u row和guess\u col==ship3\u col:
打印“Gefeliciterd!我的天哪!"
板[guess\U row-1][guess\U col-1]=“G”
船只命中率+=1
印刷电路板
如果船只命中率=3:3,那么他将被击中
打印“Je hebt gewonnen”
打破
elif(猜测行<1或猜测行>5)或(猜测列<1或猜测列>5):#控制
打印“Oeps,dat zit niet op het spelbord”
elif(董事会[guess_row-1][guess_col-1]=“X”):#赫哈林害虫
打印“Dat heb je al-eerder ingevoerd.”
其他:
打印“Fout!"
板[guess_row-1][guess_col-1]=“X”#foute pogging
印刷电路板
如果匝数=9:
打印“Einde Spel”。泽泽滕希尔!"
董事会[ship1_row-1][ship1_col-1]=“S”#zet S neer op de plekken van de boten
板[ship2_row-1][ship2_col-1]=“S”
板[ship3_row-1][ship3_col-1]=“S”
印刷电路板
主机=框架(根,宽度=200,高度=600)
mainFrame.grid(行=0,列=0,padx=10,pady=2)
mainFrame.config(后台=“#246952”)
标签(mainFrame,text=“Kies welk spel je wilt spelen”).grid(行=0,列=0,padx=10,pady=2)
BTN帧=帧(主机,宽度=200,高度=200)
网格(行=0,列=1,padx=10,pady=2)
zeeslagBtn=按钮(btnFrame,text=“Zeeslag”,command=Zeeslag)
网格(行=0,列=0,padx=10,pady=2)
root.mainloop()
如果您有游戏的.exe
文件,您可以使用该函数从GUI启动它。只需将Zeeslag()
重新定义为:
import os
def Zeeslag():
os.system(' "...\game.exe" ') # (Fill in the correct path)
无法复制该问题。当我单击按钮时,发生了一些事情。