3

新しいtkinterウィンドウを開くとき、ユーザーが新しいウィンドウのボタンをクリックできるようにするだけです。アプリケーションの一部である他のウィンドウのボタンをクリックできないようにする必要があります。どうすればこれを達成できますか?

これが私のコードの一部です:

def exportEFS(self):
  self.exportGUI = Toplevel()
  Button(self.exportGUI, text='Backup', command=self.backup).pack(padx=100,pady=5)
  Button(self.exportGUI, text='Restore', command=self.restore).pack(padx=100,pady=5)

def backup(self):
  self.backupWindow = Toplevel()

  message = "Enter a name for your Backup."

  Label(self.backupWindow, text=message).pack()

  self.entry = Entry(self.backupWindow,text="enter your choice")
  self.entry.pack(side=TOP,padx=10,pady=12)

  self.button = Button(self.backupWindow, text="Backup",command=self.backupCallBack)
  self.button.pack(side=BOTTOM,padx=10,pady=10)

このスニップでは、backupWindowを開くと、exportGUIは開いたままになりますが、backupWindowが開いている間、ユーザーは[バックアップ]または[復元]をクリックできないようにする必要があります。

ありがとう!

4

2 に答える 2

4

トップレベルウィンドウでgrab_setを呼び出して、すべてのキーボードイベントとマウスイベントがそこに送信されるようにします。

def exportEFS(self):
  self.exportGUI = Toplevel()
  Button(self.exportGUI, text='Backup', command=self.backup).pack(padx=100,pady=5)
  Button(self.exportGUI, text='Restore', command=self.restore).pack(padx=100,pady=5)

def backup(self):
  self.backupWindow = Toplevel()
  self.backupWindow.grab_set()

  message = "Enter a name for your Backup."

  Label(self.backupWindow, text=message).pack()

  self.entry = Entry(self.backupWindow,text="enter your choice")
  self.entry.pack(side=TOP,padx=10,pady=12)

  self.button = Button(self.backupWindow, text="Backup",command=self.backupCallBack)
  self.button.pack(side=BOTTOM,padx=10,pady=10)
于 2012-06-20T15:49:04.380 に答える
2

できることは、状態を無効に設定することです。そのように:

self.button.config(state="disabled")

そしてそれを有効にするには、あなたはただ使用します:

self.button.config(state="normal")

ただし、次のように、最初にボタンを変数に割り当てる必要があります。

self.backup=Button(self.exportGUI, text='Backup', command=self.backup)
self.backup.pack(padx=100,pady=5)
self.restore=Button(self.exportGUI, text='Restore', command=self.restore)
self.restore.pack(padx=100,pady=5)

したがって、以下を使用してこれらを無効にします。

self.backup.config(state="disabled")
self.restore.config(state="disabled")

以下を使用して再度有効にします。

self.backup.config(state="normal")
self.restore.config(state="normal")

ただし、ボタンが無効になっている間は、コードまたはユーザーがボタンを使用して、そのボタンに変更することはできないことに注意してください。つまり、そのボタンのテキストを変更する場合は、ボタンの状態を変更する"normal"前に変更する必要があります(ボタンがまだその状態になっていない場合、デフォルトでは、すべてのウィジェットがその状態になっています。最初に作成された)。

乾杯 :)

于 2012-06-20T15:50:05.573 に答える