Python Tk()Button命令不能完全正常工作

时间:2016-06-27 16:12:41

标签: python user-interface button tkinter

我对python编程很陌生并且有一个基本的问题,我似乎无法解决这个问题 - 我希望有人能够对此有所了解!

我创建了一个.py文件,该文件在用户和(随机)计算机之间运行基本的Rock,Paper,Scissors游戏。这通过tk()使用GUI并且工作得很好。

然后,我创建了另一个.py文件,这次创建了一个整体菜单GUI,我可以从中选择运行我的Rock,Paper,Scissors游戏。我可以创建这个tk()罚款,选择RPS游戏的按钮,游戏加载,但这次它根本不起作用!我可以按下按钮,但他们不会进行游戏。

以下是game.py的代码:

from tkinter import *
from tkinter.ttk import *
import random

def gui():
    <game code goes in here, including other functions>

root=Tk()
root.title("Rock, Paper, Scissors")
# more code to define what this looks like
# including a Frame, buttons, labels, etc>

if __name__=='__main__':
    gui()

然后我创建了整个游戏菜单,menu.py:

from tkinter import *
from tkinter.ttk import *
import random
import game

main=Tk()
main.title("J's games")

mainframe=Frame(main,height=200,width=500)
mainframe.pack_propagate(0)
mainframe.pack(padx=5,pady=5)

intro=Label(mainframe,
    text="""Welcome to J's Games. Please make your (RPS) choice.""")
intro.pack(side=TOP)

rps_button=Button(mainframe, text="Rock,Paper,Scissors", command=game.gui)
rps_button.pack()

test_button=Button(mainframe,text="Test Button")
test_button.pack()

exit_button=Button(mainframe,text="Quit", command=main.destroy)
exit_button.pack(side=BOTTOM)

main.mainloop()

如果有人能看到明显的东西,请告诉我。我很困惑为什么它自己工作,但是当我把它合并到另一个函数(按钮命令)时。我已经尝试过IDLE调试,但它似乎冻结了我!

1 个答案:

答案 0 :(得分:0)

我认为你想要在选择特定游戏时保留主窗口。这意味着游戏应该在一个单独的框架中,最初是在一个单独的Toplevel中。修改您的rps文件,如下所示,

from tkinter import *
from tkinter.ttk import *
import random

class RPS(Toplevel):
    def __init__(self, parent, title):
        Toplevel.__init__(parent)
        self.title(title)
    #game code goes in here, including other functions

# more code to define what this looks like
# including a Frame, buttons, labels, etc>

if __name__=='__main__':
    root=Tk()
    root.withdraw()
    RPS(title = "Rock, Paper, Scissors")
    root.mainloop()

这样,导入文件不会创建第二个根和主循环。

如果您一次只想运行一个游戏,则可以改为使用带有两个窗格的paned窗口。 Turtledemo做到了这一点。代码在turtledemo中。主要。然后,您将从Frame派生RPS并将其打包到第二个窗格中。