python没有运行按钮_新窗口没有显示按钮/标签(Python Tkinter)?

当我点击Tic Tac Toe按钮时,它应该启动一个新的窗口但不显示按钮并且不会出现任何错误。

这两段代码分为两个不同的脚本。

当我在自己的脚本中运行Tic Tac Toe时,它会运行并显示所有按钮。import tkinter as tk

import hangman

import playgame

class GAME_APP(tk.Tk):

def __init__(self,*args,**kwargs):

tk.Tk.__init__(self,*args,**kwargs)

container=tk.Frame(self)

container.pack(side='top',fill='both',expand=True)

container.grid_rowconfigure(0,weight=1)

container.grid_columnconfigure(0,weight=1)

self.frames = {}

F=StartPage

frame = F(container, self)

self.frames[F] = frame

frame.grid(row=0, column=0, sticky="nsew")

self.show_frame(StartPage)

def show_frame(self, cont):

frame = self.frames[cont]

frame.tkraise()

class StartPage(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self,parent)

label = tk.Label(self, text="GAME APP", font=('Ravie',50,'bold italic'),fg='Dark Blue',bg='Light Pink',padx=20,pady=10,justify='center')

label.grid(padx=80,pady=50)

button = tk.Button(self, text="Tic Tac Toe",bg='Light Green',fg='Purple',bd=8,justify='center',font=('Broadway',18,'bold italic'),command=self.TTT)

button.grid(padx=30,pady=30)

button2 = tk.Button(self, text="Hangman",bg='Light Green',fg='Purple',bd=8,justify='center',font=('Broadway',18,'bold italic'),command=self.hangman_win)

button2.grid(padx=30,pady=30)

def hangman_win(self):

bb=hangman.mainwindow()

def TTT(self):

tt=playgame.GUI()

app=GAME_APP()

app.title('Game App')

app.geometry('700x500')

app.mainloop()

这是Tic Tac Toe的GUI(最初有9个按钮,但删除它们以保持代码短。)class GUI(playGame):

def __init__(self):

import tkinter as tk

self.home=tk.Tk()

self.home.title("Tic Tac Toe")

self.home.geometry("160x300")

w,h=6,3

self.c1r1=tk.Button(text='',width=w, height=h, command=lambda: self.userTurn(self.c1r1))

self.c1r1.pack()

self.c1r2=tk.Button(text='',width=w, height=h, command=lambda: self.userTurn(self.c1r2))

self.c1r2.pack()

self.announce=tk.Label(text='No winner yet',width=w, height=h)

self.announce.pack()

self.home.mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,可以使用以下代码实现在 tkinter 中用按钮打开一个新窗口,并关闭旧的窗口: ```python import tkinter as tk class OldWindow(tk.Tk): def __init__(self): super().__init__() self.button = tk.Button(self, text="打开新窗口", command=self.open_new_window) self.button.pack() def open_new_window(self): self.new_window = NewWindow() self.new_window.protocol("WM_DELETE_WINDOW", self.on_new_window_close) self.withdraw() # 隐藏旧窗口 def on_new_window_close(self): self.new_window.destroy() # 关闭新窗口 self.deiconify() # 显示旧窗口 class NewWindow(tk.Toplevel): def __init__(self): super().__init__() self.label = tk.Label(self, text="这是一个新窗口") self.label.pack() if __name__ == "__main__": old_window = OldWindow() old_window.mainloop() ``` 在这个例子中,我们创建了一个名为 `OldWindow` 的窗口类,它有一个名为 `button` 的按钮。当用户点击这个按钮时,`OldWindow` 类的 `open_new_window` 方法会被调用,这个方法会创建一个新窗口 `NewWindow`,并隐藏旧窗口 `OldWindow`。新窗口 `NewWindow` 关闭时,会调用 `OldWindow` 类的 `on_new_window_close` 方法,这个方法会销毁新窗口 `NewWindow`,并显示旧窗口 `OldWindow`。 需要注意的是,在 `OldWindow` 类的 `open_new_window` 方法中,我们将新窗口 `NewWindow` 的关闭事件绑定到了 `OldWindow` 类的 `on_new_window_close` 方法上,这样当用户关闭新窗口时,就会触发 `on_new_window_close` 方法,从而关闭新窗口显示旧窗口。 另外,在 `OldWindow` 类的 `open_new_window` 方法中,我们使用了 `withdraw` 方法来隐藏旧窗口,这是因为在 tkinter 中,每个窗口都是一个独立的程序对象,当一个窗口关闭后,整个应用程序也会退出。因此,我们需要隐藏旧窗口而不是关闭它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值