Python Forum
[Kivy] Need to render updated recycler view
Thread Rating:
  • 1 Vote(s) - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Kivy] Need to render updated recycler view
#8
^_^

The call needed a lambda function, and i was passing it a normal function!
That was the error.
Thank you sir :D

But then running my code puts everything into the same side. I'll attach picture of the output. I want it to come on the right side and i want it to be scrollable.

Here is my semi-fiexed code and its output.
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
import openpyxl

root = Builder.load_string('''
<RootWid>:
	orientation: 'vertical'
	ActionBar:
		pos_hint: {'top':1}
		ActionView:
			use_separator: True
			ActionPrevious:
				title: 'StuCheck'
				with_previous: False
			ActionOverflow:
			ActionButton:
				text: 'Populate list'
			ActionButton:
				text: 'Sort list'
			ActionButton:
				text: 'Clear list'
	BoxLayout:
		orientation: 'horizontal'
		ScrollView:	
			Widget1:
		ScrollView:
			Widget2:

<Widget1>:
	orientation: 'vertical'
<Widget2>:
	orientation: 'vertical'
''')

class RootWid(BoxLayout):
	pass

class Widget1(BoxLayout):
	def __init__(self, **kwargs):
		super(Widget1, self).__init__(**kwargs)
		subjects = ['Anatomy', 'Biochemistry', 'Physiology', 'Pharmacology', 'Pathology', 'Microbiology', 'FMT', 'Ophthalmology', 'ENT', 'PSM', 'OG', 'Surgery', 'Internal_Medicine', 'Paediatrics', 'Anaesthesiology', 'Radiology', 'Dermatology', 'Orthopaedics', 'Psychiatry']
		for subject in subjects:
			btn = Button(text=subject, on_release= lambda x: self.populate(subject))
			Widget1.add_widget(self, btn)

	def populate(self, subject):
		wb = openpyxl.load_workbook('sWL.xlsx')
		sheet = wb[subject]
		data = []
		for row in range (2, sheet.max_row+1):
			question = sheet.cell(row=row, column=1).value
			data.append(question)
		return self.make_buttons(data)

	def make_buttons(self, data_list):
		self.clear_widgets()
		for question in data_list:
			btn = Button(text=question)
			Widget2().add_widget(self, btn)


class Widget2(BoxLayout):
	pass

class TestApp(App):
	def build(self):
		return RootWid()

if __name__ == '__main__':
	TestApp().run()
İmage

İmage
Reply


Messages In This Thread
Need to render updated recycler view - by test - Nov-22-2018, 11:31 AM
RE: Need to render updated recycler view - by test - Nov-22-2018, 05:14 PM
RE: Need to render updated recycler view - by test - Nov-23-2018, 07:19 AM
RE: Need to render updated recycler view - by test - Nov-23-2018, 07:20 PM
RE: Need to render updated recycler view - by test - Nov-24-2018, 05:11 PM
RE: Need to render updated recycler view - by test - Nov-24-2018, 06:23 PM
RE: Need to render updated recycler view - by test - Nov-25-2018, 05:25 AM
RE: Need to render updated recycler view - by test - Nov-25-2018, 10:27 AM
RE: Need to render updated recycler view - by test - Nov-25-2018, 11:35 AM
RE: Need to render updated recycler view - by test - Nov-26-2018, 01:35 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020