2017-10-19 43 views
-1

我用tkinter在python 3.6.2中写了一个波纹管代码,我想当用户在用户名文本框中按回车键时,光标移动到密码文本框。如何将光标移到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 /如何-可以-I-设置的鼠标位置-IN-A-TKinter的窗口) –

回答

0

这实际上比我预期的要简单得多。

我们可以使用.bind()获得<Return>事件的回调。这意味着每当定义的窗口小部件处于焦点时按下返回字符,我们就会得到一个回调。

为了得到它循环到下一个小部件,我们可以使用this answer从布莱恩奥克利:

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

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

有关此代码的要点:

的方法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()