在python Tkinter中加载屏幕或更改光标

时间:2014-11-11 18:32:10

标签: python tkinter

我正在使用Tkinter在python上创建我的UI。

目前, .__init__() .initialize() 是这样的:

def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()
    def initialize(self):
        self.grid()
        self.entryVariable = Tkinter.StringVar()
        self.entry = Tkinter.Entry(self,textvariable=self.entryVariable)#Entry é um nome de Textfield da tela
        self.entry.grid(column=0,row=0,sticky='EW')#EW é pra ele grudar nas edges
        self.entry.bind("<Return>", self.OnPressEnter)#dispara onPressEnter quando enter é pressionado no ttext field        
        self.entryVariable.set(u"Entre com o nome do amigo que você quer convidar pra sair")        

        button = Tkinter.Button(self,text=u"Ver compatibilidade!",
                                command=self.OnButtonClick)#botao clicavel dispara onButtonClick
        button.grid(column=1,row=0)
        self.labelVariable = Tkinter.StringVar()
        #label = Tkinter.Label(self,textvariable=self.labelVariable, # label que usa variável labelVariable como texto
                              #anchor="w",fg="white",bg="black", height=35, width=55)#NOVO WIDTH E HEIGHT FIXO
        #PESQUISAR COMO SE ADD SCROLLBAR PRA LABEL, SE TEM COMO OU ADD LABEL EM WINDOW E AIH BOTAR SCROLLBAR
        self.texto = Tkinter.Text(self, fg="white",bg="black", height=35, width=55)
        self.texto.grid(column=0,row=1,columnspan=2,sticky='EW')
        # create a Scrollbar and associate it with txt
        scrollb = Tkinter.Scrollbar(self, command=self.texto.yview)
        scrollb.grid(row=1, column=1, sticky='nsew')
        self.texto['yscrollcommand'] = scrollb.set        

        #label.grid(column=0,row=1,columnspan=2,sticky='EW')
        self.labelVariable.set(u"Hello !")
        self.grid_columnconfigure(0,weight=1)#estica a coluna 1 mesmo com resize da janela
        self.resizable(True,True)#soh ppode resize horizontalmente! vertical nao pode
        self.update()
        self.geometry(self.geometry())          
        self.entry.focus_set()#textfield foca
        self.entry.selection_range(0, Tkinter.END)

在这个GUI上,我有一个按钮,在这个按钮上,我这样做:

def OnButtonClick(self):
        #self.labelVariable.set( self.labelVariable.get() + "\n" + self.entryVariable.get()+" (You clicked the button)" ) #muda o texto da labelVariable com o valor de entryVariable
        #self.texto.insert(Tkinter.END, self.entryVariable.get() + "\n")
        from AcharCompatibilidadeEntreAmigosTudoJunto import AcharCompatibilidadeEntreAmigosTudoJunto
        achaCompatibilidade = AcharCompatibilidadeEntreAmigosTudoJunto(self.access_token, self)        
        achaCompatibilidade.calcularCompatibilidadeEntreEsseAmigoETodosOsMeusAmigos(self.entryVariable.get())        
        self.entry.focus_set()#seleciona o texto todo assim que o usuário aperta botão ou enter
        self.entry.selection_range(0, Tkinter.END) 

问题是,当用户点击按钮时,我想鼠标的光标更改为加载光标,当 {{1}时,它必须改回来} 功能结束。我该怎么做?

1 个答案:

答案 0 :(得分:0)

按下按钮会调用一个方法,将光标设置为您想要的任何颜色,然后在同一方法中启动您尝试调用的实际方法的新线程。然后在此方法结束时将光标改回。

此链接:http://effbot.org/zone/tkinter-busy.htm可以帮助您更改光标,在本网站上进行快速谷歌搜索或搜索可以为您提供线程所需的所有信息。您正在寻找的模块被称为“线程”&#39;顺便说一句。