クリックの際、Returnキーが押されたときに間違ったDimissボタンが消えますが、後で何かを入力しても何も起こりません。問題は、私がそれを正しく入力すると、ログインボタンがポップアップして動作するということです。私が間違って入力すると、解除ボタンがポップアップし、クリックするかEnterキーを押すと消去されます。今、間違った試行の後に私が入力するものは、間違いなく間違っても何もしません。ボタンをクリックしてtkinter/pythonプログラムを再起動する方法は?
(1)これを回避するには、プログラムをクリックして再起動することができますか、ウィンドウを閉じるか、別の再オープンをせずに解除ボタンを押してもかまいませんでした。
(2)プログラムを終了/再起動する最大ログイン試行コードもあります。もしあれば、このコードにどのように置きますか?ここで
を(間違った> 3は、その後、終了した場合のようなもの)は、コード(のpython3)です - あなたが希望の場合は、自分自身のためにそれを試してみてください。
from tkinter import *
class Application(object):
def __init__(self, event=None):
self.root = Tk()
self.root.configure(bg="darkorchid1", padx=10, pady=10)
self.root.title("WELCOME")
self.username = "Bob"
self.welcome = Label(self.root, text="WELCOME TO MY PROGRAM", bg="lightgrey", fg="darkorchid1")
self.welcome.pack()
self.label0 = Label(self.root, text="ENTER NAME:", bg="purple", fg="white", height=5, width=50)
self.label0.pack()
self.entry = Entry(self.root, width=25)
self.entry.configure(fg= "white",bg="grey20")
self.entry.pack()
self.entry.bind("<Return>", self.submit)
self.button = Button(self.root, text="SUBMIT", highlightbackground="green", width=48, command=self.submit)
self.button.pack()
def submit(self, event=None):
username = self.entry.get()
if username == self.username:
self.button1 = Button(self.root, text='LOGIN', highlightbackground="green", width=28, command=self.root.destroy)
self.button1.pack()
self.entry.bind("<Return>", self.login)
else:
self.button2 = Button(self.root, text="INCORRECT- CLICK TO DIMISS THIS MESSAGE", highlightbackground="red", width=48, command=self.incorrect)
self.button2.pack()
self.entry.bind("<Return>", self.incorrect)
def incorrect(self, event=None):
self.button2.destroy()
def login(self, event=None):
self.root.destroy()
app=Application()
mainloop()
代わりに私は、これはプログラムを再起動するボタンを破壊します正しいコマンドを見つけることができません。これはプログラムの始めに存在しないのでボタンを破壊するだけでなく、最初の試行の後で実際に正しくない入力ができるようにするためです。
def incorrect(self, event=None):
self.button2.destroy()
私は初心者ですので、よりシンプルで、この時点で優れています。ありがとうございました。
を変更していますまた試みは、作成した場所にチェックし移動することができますbutton2(そのため、最後の試行で間違ったボタンを押す必要はありません) – jross
あなたの時間と助けを捧げてくれてありがとうございました。いくつかの簡単な質問: なぜ+ 1ではなく+ = 1ですか? なぜ変数をNoneに設定するのですか? また、私はリターンが "while"と "for"ステートメントのためだけに働いたと考えました。それはあまりにもデフのために働く?正確にどこに戻りますか? – gmonz
@gmonz + = 1は、(self.attempts = self.attempts + 1)と同じことです。それはちょうどショートカットです – jross