• frankL

    Thank you bosco. That fix works for me on iPhone12.

    posted in Pythonista read more
  • frankL

    I copied the above code and ran it as is. It did not return the selected author. What was printed in the console was:

    after wait: None
    list dialog returned: None
    items: ['Baldacci,David', 'Barr,Nevada', 'Bartol,Amy', 'Bernt,Eric', 'Brandt,Kylie', 'Bruni,Riccardo', 'Bryndza,Robert', 'Burke,James Lee', 'Burton,Mary', 'Butcher,Jim', 'Carlson,Tucker', 'Carrol,Sean', 'Case,Andrew', 'Chernov,Ron', 'Clayton,MegWaite', 'Coben,Harlan', 'Cole,Bobby', 'Connelly,Michael', 'Cornwell,Bernard', 'Cornwell,Patricia', 'Cowie,Amber', 'Crombie,Deborah', 'Crosby,Ellen', 'Cross,Katie', 'Cussler,Clive', 'Delaney,Matthew B.J.', 'Dilts,Tyler', 'Dorsey,Tim'] section, row: 0 4
    in delegate: my_sel Brandt,Kylie

    posted in Pythonista read more
  • frankL

    I did have it as return tbl.data_source.items[tbl.selected_row[1]] but I changed it to return tbl.data_source.items[tbl.selected_row[0]] and it still just returns the first list item ''Baldacci,David'. This is baffling.

    posted in Pythonista read more
  • frankL

    I did that and now it returns the first item in the list (''Baldacci,David') regardless of which item is selected. Where is "selected_row" defined?

    posted in Pythonista read more
  • frankL

    I get that same thing in the console but it doesn't populate the TextView field. It doesn't appear to be passing the value of my_sel['value'] so I put the assignment line into the def tableview_did_select function and it works. This seems like a real kluge! Beware ios15.1.1

    def show_list_dialog(items=None, *args, **kwargs):
        items = items or []
        tbl = ui.TableView(**kwargs)
        tbl.data_source = ui.ListDataSource(items)
        my_sel = {'value': None}
        class MyTableViewDelegate (object):
            def tableview_did_select(self, tableview, section, row):
                my_sel['value'] = tableview.data_source.items[row]
                tableview.close()
                print('my_sel',my_sel['value'])
                author_result.text = my_sel['value']
        tbl.delegate = MyTableViewDelegate()
        tbl.present(style='sheet')
        tbl.wait_modal()
        return my_sel['value']
    

    posted in Pythonista read more
  • frankL

    BTW the ios version is 15.1.1 on iPhone 12

    posted in Pythonista read more
  • frankL

    I added those three lines and now it prints the correct selection from within def tableview_did_select but it apparently returns 'none' which is what gets populated into the TextView field. Here is the exact script:

    import ui
    #
    def show_list_dialog(items=None, *args, **kwargs):
        items = items or []
        tbl = ui.TableView(**kwargs)
        tbl.data_source = ui.ListDataSource(items)
        my_sel = {'value': None}
        class MyTableViewDelegate (object):
            def tableview_did_select(self, tableview, section, row):
                my_sel['value'] = tableview.data_source.items[row]
                tableview.close()
                print('my_sel',my_sel['value'])
        tbl.delegate = MyTableViewDelegate()
        tbl.present(style='sheet')
        tbl.wait_modal()
        return my_sel['value']
    #
    w, h = ui.get_screen_size()
    view = ui.View(name="Frank's Library", bg_color='lightblue', frame=(0, 0, w, h))
     
    def select_author(sender):
        author_unique = ['Baldacci,David', 'Barr,Nevada', 'Bartol,Amy', 'Bernt,Eric', 'Brandt,Kylie', 'Bruni,Riccardo', 'Bryndza,Robert', 'Burke,James Lee', 'Burton,Mary', 'Butcher,Jim', 'Carlson,Tucker', 'Carrol,Sean', 'Case,Andrew', 'Chernov,Ron', 'Clayton,MegWaite', 'Coben,Harlan', 'Cole,Bobby', 'Connelly,Michael', 'Cornwell,Bernard', 'Cornwell,Patricia', 'Cowie,Amber', 'Crombie,Deborah', 'Crosby,Ellen', 'Cross,Katie', 'Cussler,Clive', 'Delaney,Matthew B.J.', 'Dilts,Tyler', 'Dorsey,Tim']
        f = (0, 0, 400, 300)
        selected_author = show_list_dialog(author_unique, frame=f, name='Select an Author')
        author_result.text = str(selected_author)
        return
     
    author_button = ui.Button(title='Author', frame=(10,5,350,100), border_color='black', border_width=2, background_color='#EAECEE', action=select_author, font=('Arial Rounded MT Bold',18))
    author_button.width=70
    author_button.height=40
    view.add_subview(author_button)
    #
    global author_result
    author_entry=''
    author_result = ui.TextView(name='author',frame=(100,5,250,40), border_color='black', border_width=3, text=author_entry, font=('Arial Rounded MT Bold',16))
    view.add_subview(author_result)
     
    nav_view = ui.NavigationView(view)
    nav_view.present('sheet')
    

    posted in Pythonista read more
  • frankL

    I don't get an error. It appears that the delegate just doesn't run. I removed those lines and it still doesn't work. I put a print statement into the def tableview_did_select functionn and it doesn't get executed.
    What is strange is that this same function in several other scripts also stopped working. I checked them after this script stopped working and none of them work now. That's why I thought it might have something to do with ios15. I had just upgraded to ios15 the previous night.

    posted in Pythonista read more
  • frankL

    This is a simple version of what I'm trying to run:

    import ui
    #
    def show_list_dialog(items=None, *args, **kwargs):
        items = items or []
        tbl = ui.TableView(**kwargs)
        tbl.data_source = ui.ListDataSource(items)
        my_sel = {'value': None}
        class MyTableViewDelegate (object):
            def tableview_did_select(self, tableview, section, row):
                my_sel['value'] = tableview.data_source.items[row]
                tableview.close()
                tbl.delegate = MyTableViewDelegate()
                tbl.present(style='sheet')
                tbl.wait_modal()
                return my_sel['value']
    #
    w, h = ui.get_screen_size()
    view = ui.View(name="Frank's Library", bg_color='lightblue', frame=(0, 0, w, h))
    
    def select_author(sender):
        author_unique = ['Baldacci,David', 'Barr,Nevada', 'Bartol,Amy', 'Bernt,Eric', 'Brandt,Kylie', 'Bruni,Riccardo', 'Bryndza,Robert', 'Burke,James Lee', 'Burton,Mary', 'Butcher,Jim', 'Carlson,Tucker', 'Carrol,Sean', 'Case,Andrew', 'Chernov,Ron', 'Clayton,MegWaite', 'Coben,Harlan', 'Cole,Bobby', 'Connelly,Michael', 'Cornwell,Bernard', 'Cornwell,Patricia', 'Cowie,Amber', 'Crombie,Deborah', 'Crosby,Ellen', 'Cross,Katie', 'Cussler,Clive', 'Delaney,Matthew B.J.', 'Dilts,Tyler', 'Dorsey,Tim']
        f = (0, 0, 400, 300)
        selected_author = show_list_dialog(author_unique, frame=f, name='Select an Author')
        author_result.text = str(selected_author)
        return
    
    author_button = ui.Button(title='Author', frame=(10,5,350,100), border_color='black', border_width=2, background_color='#EAECEE', action=select_author, font=('Arial Rounded MT Bold',18))
    author_button.width=70
    author_button.height=40
    view.add_subview(author_button)
    #
    global author_result
    author_entry=''
    author_result = ui.TextView(name='author',frame=(100,5,250,40), border_color='black', border_width=3, text=author_entry, font=('Arial Rounded MT Bold',16))
    view.add_subview(author_result)
    
    nav_view = ui.NavigationView(view)
    nav_view.present('sheet')```

    posted in Pythonista read more
  • frankL

    Specifically, it appear that the tableview delegate is not working.

    posted in Pythonista read more

Internal error.

Oops! Looks like something went wrong!