2017-10-19 27 views
-1

私はpython 3.6.2でtkinterでコードを書きました。ユーザがユーザ名テキストボックスにEnterキーを押したときにカーソルをパスワードのテキストボックスに移動します。どのようにtkinterのカーソルを移動しますか?

from tkinter import * 
class Application(Frame): 
    def __init__(self,master): 
     super(Application, self).__init__(master) 
     self.grid() 
     self.create_main() 
    def create_main(self): 
     print("testing") 
     self.title = Label(self, text=" Stuck In The Circle ") 
     self.title.grid(row=0, column=2) 
     self.user_entry_label = Label(self, text="Username: ") 
     self.user_entry_label.grid(row=1, column=1) 
     self.user_entry = Entry(self)       
     self.user_entry.grid(row=1, column=2) 
     self.pass_entry_label = Label(self, text="Password: ") 
     self.pass_entry_label.grid(row=2, column=1) 
     self.pass_entry = Entry(self)       
     self.pass_entry.grid(row=2, column=2) 
     self.user_entry = Entry(self, justify="right") 
     self.pass_entry = Entry(self, justify="right") 
     self.sign_in_butt = Button(self, text="Sign In",command = self.logging_in)#SIGN IN BUTTON 
     self.sign_in_butt.grid(row=5, column=2) 
    def logging_in(self): 
    user_get = self.user_entry.get() 
    pass_get = self.pass_entry.get() 
root = Tk() 
root.title("Stuck in the Circle") 
root.geometry("400x100") 
app = Application(root) 
root.mainloop() 

どうすればいいですか?

+0

[この記事で]使用される技術(https://stackoverflow.com/questions/16704032をお試しください/マウスの位置を指定することができます) –

答えて

0

これは、実際には予想よりもずっと簡単です。

.bind()を使用すると、<Return>イベントでコールバックを取得できます。これは、定義されたウィジェットにフォーカスがあるたびにリターン文字が押されるたびにコールバックを取得することを意味します。このコードについて

def focus_next_window(event): 
event.widget.tk_focusNext().focus() 
return("break") 

text_widget=Text(...) text_widget.bind("<Tab>", focus_next_window) 

重要事項:私たちはブライアンオークリーからthis answerを使用することができ、次のウィジェットにサイクルにそれを得るために

メソッドtk_focusNext()は、次を返します。キーボードのウィジェット トラバーサル階層。メソッドfocus()はフォーカスをそのウィジェットに設定します "break"を返すことは、クラスバインディング の起動を妨げるため重要です。タブ文字を挿入するのはこのクラスバインディングで、望ましくない です。

だから、私たちの状況で同じロジックを適用することは、私たちは以下のようなものを使用することができます。

from tkinter import * 

class App: 
    def __init__(self, root): 
     self.root = root 
     self.entry1 = Entry(self.root) 
     self.entry2 = Entry(self.root) 
     self.entry1.pack() 
     self.entry2.pack() 
     self.entry1.bind("<Return>", self.callback) 
    def callback(self, event): 
     event.widget.tk_focusNext().focus() 

root = Tk() 
App(root) 
root.mainloop() 
関連する問題