使用Kivy模块的Py程序

想知道我为什么收到

  

TypeError:“ ObservableList”对象不可调用。调用background_color时。

以及移除vsCode.background([])时的这种感觉,我觉得我缺少一些简单的东西,但是我不能为此动动手指,谢谢:

  

TypeError:vsOpen()接受1个位置参数,但给出了2个

    import os
    import sys
    import subprocess
    import webbrowser as browser
    from kivy.app import App
    from kivy.uix.gridlayout import GridLayout
    from kivy.uix.image import Image
    from kivy.uix.label import Label
    from kivy.uix.textinput import TextInput
    from kivy.uix.button import Button
    from cryptography.fernet import Fernet
    from colorama import Fore,Style

    class MyApp(App):
        def build(self):
            vsCode=Button(text="vsCode",size=(45,45))
            vsCode.background_normal = ""
            vsCode.background_color([0,255,0.85])
            vsCode.bind(on_press=self.vsOpen)
            return vsCode

        def encryption(self,on):
            iD = Fernet.generate_key()
            cipher = Fernet(iD)
            message = input(b">: ")
            e_message = cipher.encrypt(bytes(message,"utf-8"))
            if len(e_message) != 0:
              if on == 1:
                print(e_message)
              else:
                dcrypt = cipher.decrypt(bytes(message,"utf-8"))
                print(dcrypt)
            else:
                print("Encryption is not working.")

        def mURLs(self):
           for x in range(0,2):
              url = input(">") 
              if len(url)!=0:
                  browser.open_new_tab(url)
                  print(Fore.BLUE+"accessing " + url + "..")
              else:
                  print(Fore.RED+">no url was entered..")
                  sys.exit()

        def vsOpen(self):
           try:
             if os.path.isfile(PATHs[0]) == 1:
                x=subprocess.call(PATHs[0])
             else:
                print(Fore.RED+"vsCode was not found"+Style.BRIGHT)
           except TypeError:
                print("Type error has occured at vsOpen")

root = MyApp()
if __name__ == "__main__":
    root.run()
jjj22 回答:使用Kivy模块的Py程序

background_color不是要调用的方法,它是ListProperty。也许您打算使用:

vsCode.background_color = [0,255,0.85]

此外,当您将方法绑定到Button时,将以Button实例作为参数来调用该方法。因此,您可以通过将vsOpen()方法的定义更改为以下方式来纠正第二个错误:

def vsOpen(self,*args):
,

谢谢约翰,这帮助我在进行此工作时感到很累,并且找不到合适的解决方案。对于任何其他关注此问题的人,在将export default class MyComponent extends React.Component { _isMounted = false; state = { search: '',notes: [],}; async componentDidMount() { await this.getItems(); } componentDidUpdate(prevProps) { this._isMounted = true; if (this._isMounted) { if (this.state.search !== prevProps.search) { let filteredNotes = this.state.notes.filter(el => el.name.includes(this.state.search)); this.state.notes = filteredNotes; } } } componentWillUnmount() { this._isMounted = false; } async getItems() { this.setState({ loadingNotes: true }); const notesObj = await getAllNotes(); this.getNotes(notesObj); this.setState({ loadingNotes: false }) } getNotes(notesObj) { for (let i = 0; i < notesObj.length; i++) { let note = { name: notesObj[i].note.name,} this.state.notes.push(note); } } render() { const { search } = this.state; const { notes } = this.state; const { navigate } = this.props; return ( <View> <Searchbar placeholder="Search" onChangeText={(query) => { this.setState({ search: query }); }} value={search} /> <NoteFlatList data={notes.sort((a,b) => (a.name > b.name) ? 1 : -1)} navigate={navigate} /> </View> ); } } 与模块绑定到类中时应注意,应使用button进行调用,以避免出现未定义的名称警告。

正确使用:

self.

使用不当:

 vsCode.bind(on_press=self.vsOpen)
本文链接:https://www.f2er.com/2980007.html

大家都在问