私はプログラマーではなく、ただの趣味なので、私の問題に対する「pythonic な方法」の解決策を教えていただければ幸いです。
私が欲しいもの:
「New Game」、「Settings」、「Exit」ボタンのあるメニューをtkinterで作成したいのですが、「Exit」ボタンをクリックすると、「よろしいですか?」「はい」と「いいえ」ボタンがあるポップアップウィンドウで、「いいえ」ボタンをクリックすると、「よろしいですか?」を破棄したい ポップアップウィンドウ。
何が起こっていますか:
「新しいゲーム」ボタンと「設定」ボタンは思い通りに機能しますが、「終了」ボタンをクリックすると「よろしいですか?」というメッセージが表示されます。ポップアップ ウィンドウで、次のエラーが表示されます。
名前「varAreYouSureToplevel」は定義されていません
これが正しい方法でない場合は、通常の方法を教えてください。
クラスの書き方を学んでいますが、クラス内で Tkinter を使用しようとすると、少し混乱します。
クラスを作成せずに (Tkinter root と Toplevel を使用して) これに対する解決策がある場合は、それを見てとてもうれしいです!
私はPython 3.4を使用しています
ご協力ありがとうございました!
これが私のコードです:
from tkinter import *
import os
class classMainMenu(Frame):
def __init__(self, varRoot):
Frame.__init__(self, varRoot)
self.grid()
self.funcMainMenu()
def funcMainMenu(self):
self.varNewGameButton = Button(self, text="New Game", command=self.funcNewGame)
self.varNewGameButton.grid(row=0, column=0)
self.varSettingsButton = Button(self, text="Settings", command=self.funcSettingsMenu)
self.varSettingsButton.grid(row=1, column=0)
self.varExitButton = Button(self, text="Exit", command=self.funcExit)
self.varExitButton.grid(row=2, column=0)
def funcNewGame(self):
self.varNewGameButton.destroy()
self.varSettingsButton.destroy()
self.varExitButton.destroy()
print("New Game")
def funcSettingsMenu(self):
self.varNewGameButton.destroy()
self.varSettingsButton.destroy()
self.varExitButton.destroy()
print("Settings")
def funcExit(self):
self.varAreYouSureToplevel = Toplevel(self)
self.varAreYouSureToplevel.title("Are you sure?")
self.varAreYouSureTextLabel = Label(varAreYouSureToplevel, text="Are you sure you want to exit?") # HERE IT SAYS: NameError: name 'varAreYouSureToplevel' is not defined
self.varAreYouSureTextLabel.grid(row=3, column=0)
self.varAreYouSureYesButton = Button(varAreYouSureToplevel, text="Yes", command=self.funcExitToDesktop)
self.varAreYouSureYesButton.grid(row=4, column=0)
self.varAreYouSureNoButton = Button(varAreYouSureToplevel, text="No", command=self.funcDestroyToplevel)
self.varAreYouSureNoButton.grid(row=4, column=1)
def funcDestroyToplevel(self):
self.varAreYouSureToplevel.destroy
def funcExitToDesktop(self):
os._exit(1)
varRoot = Tk()
objectMainMenu = classMainMenu(varRoot)
objectMainMenu.mainloop()