python - 有没有办法在 kivy 中使用 twolistitem 和 recycleview 显示所有 .txt 文件
问题描述
我正在尝试使用 kivy 和 kivymd 创建 PDF 和文本阅读器应用程序如何在设备(最好是 Android)中获取 PDF 文件并使用回收视图将它们显示在列表项中这是我的功能以及我的 kv MDIconButton 代码
class Example(MDApp):
PDFs = ObjectProperty()
def build(self):
self.theme_cls.primary_palette = "Red"
return Builder.load_string(KV)
def all_pdfs(self):
for root, dirs, files in os.walk('storage/emulated/0'):
if file in files.endswith('.pdf'):
self.PDFs = file
else:
return None
return self.PDFs
千伏:
MDTabs:
id: tabs
on_tab_switch: app.on_tab_switch(*args)
Tab1:
text: "CATEGORY"
MDGridLayout:
cols: 3
MDIconButton:
icon: "pdf-box"
user_font_size: "85"
on_press: app.theme_cls.primary_color
on_press: app.all_pdfs()
解决方案
你可以使用我的代码,最好的办法是我们可以确保返回书名的函数是否正常工作,Python 和 KivyMD 非常棒,这是 jbsidis 的带有 recycleview 和搜索栏的代码(来自萨尔瓦多的问候):
from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivymd.uix.list import OneLineIconListItem
Window.size = (330, 660)
kv = '''
#:import MDTextField kivymd.uix.textfield.MDTextField
<MyTile@SmartTileWithLabel>
size_hint_y: None
height: "240dp"
<S>:
MDTextFieldRound:
pos_hint: {"center_x": .5, "center_y": .95}
normal_color : [1,1,1,.1]
color_active : [1,1,1,1]
size_hint: .8, .07
hint_text : 'Search a product...'
icon_left : 'magnify'
<JBSIDIS>
IconLeftWidget:
icon: "Photos/pro.jpg"
Screen:
name: "pantalla1"
MDToolbar:
id: tb1
title: "jbsidis"
pos_hint: {"top": 1}
md_bg_color: (.1, .1, .5, 1)
GridLayout:
cols: 2
padding: dp(20)
FloatLayout:
MDTextFieldRound:
id: search_field
pos_hint: {"center_x": .5, "center_y": .87}
hint_text : 'jbsidis...'
icon_left : 'magnify'
normal_color : (100, 100, 50, .5)
color_active : (255, 255, 255, 0)
on_text: app.search(root.ids.rvvv9,self.text)
BoxLayout:
id: m5
spacing: dp(10)
#padding: dp(20)
pos_hint: {"center_x": .5, "center_y": .32}
orientation: "vertical"
BoxLayout:
id: s_res9
size_hint_y: None
height: self.minimum_height
pos_hint: {"center_x": .5, "center_y": .4}
orientation: "vertical"
RecycleView:
id: rvvv9
key_viewclass: 'viewclass'
key_size: 'height'
RecycleBoxLayout:
padding: dp(10)
spacing: dp(5)
default_size: None, dp(75)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
MDToolbar:
id: success_screen_toolbar
title: "jbsidis"
pos_hint: {"top": 1}
right_action_items: [["progress-check", lambda: print(6)]]
MDBottomAppBar:
MDToolbar:
id: success_screen_bottomappbar
icon: "magnify"
on_action_button: app.eq(root.ids.search_field,True)
type: 'bottom'
mode: 'center'
#elevation: '8dp'
left_action_items: [["calendar-text", lambda x: print(6)], ["account-group", lambda x: print(6)]]
right_action_items: [["magnify", lambda x: app.eq(root.ids.search_field,True)], ["menu", lambda x: print(6)]]
'''
authors="jbsidis"
class JBSIDIS(OneLineIconListItem):
pass
class blanks1(BoxLayout):
pass
class S(FloatLayout):
pass
authors4="jbsidis"
books="""
Austen, Jane (72159) jbsidis
Dickens, Charles (69419) jbsidis
Doyle, Arthur Conan (54432) jbsidis
Twain, Mark (44058) jbsidis
Wilde, Oscar (38059) jbsidis
Carroll, Lewis (35084) jbsidis
Dostoyevsky, Fyodor (30216) jbsidis
Shakespeare, William (27619) jbsidis
Stevenson, Robert Louis (26883) jbsidis
Tolstoy, Leo, graf (26291) jbsidis
Wells, H. G. (Herbert George) (25044) jbsidis
Shelley, Mary Wollstonecraft (23693) jbsidis
Verne, Jules (23131) jbsidis
Melville, Herman (22992) jbsidis
Nietzsche, Friedrich Wilhelm (22577) jbsidis
Garnett, Constance (22148) jbsidis
Homer (21636) jbsidis
Dumas, Alexandre (20477) jbsidis
Plato (19449) jbsidis
Baum, L. Frank (Lyman Frank) (19100) jbsidis
Montgomery, L. M. (Lucy Maud) (18415) jbsidis
Jowett, Benjamin (18245) jbsidis
Kipling, Rudyard (18032) jbsidis
Joyce, James (17325) jbsidis
London, Jack (17298) jbsidis
Doré, Gustave (16953) jbsidis
Poe, Edgar Allan (16269) jbsidis
Christie, Agatha (15959) jbsidis
Conrad, Joseph (15922) jbsidis
Kafka, Franz (15913) jbsidis
Dante Alighieri (15710) jbsidis
Fitzgerald, F. Scott (Francis Scott) (15486) jbsidis
Hawthorne, Nathaniel (15394) jbsidis
Lang, Andrew (15051) jbsidis
Widger, David (14877) jbsidis
Stoker, Bram (14832) jbsidis
Chesterton, G. K. (Gilbert Keith) (14666) jbsidis
Leblanc, Maurice (14627) jbsidis
Ibsen, Henrik (14583) jbsidis jbsidis
Swift, Jonathan (14152) jbsidis
Grimm, Jacob (13991) jbsidis
Grimm, Wilhelm (13991) jbsidis
Alcott, Louisa May (13968) jbsidis
Machiavelli, Niccolò (13952) jbsidis
Maude, Aylmer (13944) jbsidis
Maude, Louise (13883) jbsidis
Wyllie, David (Translator) (13872) jbsidis
Wodehouse, P. G. (Pelham Grenville) (13477) jbsidis
Russell, Bertrand (13379) jbsidis
James, Henry (13325) jbsidis
Pope, Alexander (13181) jbsidis
Hugo, Victor (13110) jbsidis
Marriott, W. K. (William Kenaz) (12711) jbsidis
Brontë, Charlotte (12398) jbsidis
Burnett, Frances Hodgson (12353) jbsidis
Rizal, José (12351) jbsidis
Cervantes Saavedra, Miguel de (12268) jbsidis
Thoreau, Henry David (12154) jbsidis
Barrie, J. M. (James Matthew) (12065) jbsidis
Scott, Walter (11733) jbsidis
Chekhov, Anton Pavlovich (11617)
Defoe, Daniel (11366) jbsidis
Burton, Richard Francis, Sir (11267)
Shaw, Bernard (11254) jbsidis
Terry, W. E. (11105) jbsidis
Morley, Henry (11017) jbsidis
Townsend, F. H. (Frederick Henry) (10812) jbsidis
Gilman, Charlotte Perkins (10547) jbsidis
Balzac, Honoré de (10432) jbsidis
Haggard, H. Rider (Henry Rider) (9979) jbsidis
Maupassant, Guy de (9907) jbsidis
Potter, Beatrix (9819) jbsidis
Goethe, Johann Wolfgang von (9794) jbsidis
Cary, Henry Francis (9754) jbsidis
Leech, John (9693) jbsidis
Buckley, Theodore Alois (9685) jbsidis
Butler, Samuel (9469) jbsidis
Wharton, Edith (9291) jbsidis
Ormsby, John (9146) jbsidis
Gibran, Kahlil (9031) jbsidis
Burgess, Thornton W. (Thornton Waldo) (8915) jbsidis
Morris, Richard (8866) jbsidis
Hapgood, Isabel Florence (8694) jbsidis
Hardy, Thomas (8624) jbsidis
Bierce, Ambrose (8495) jbsidis
Kemble, E. W. (Edward Windsor) (8084) jbsidis
Irving, Washington (8068) jbsidis
Burroughs, Edgar Rice (7949) jbsidis
Yeto, Genjiro (7930) jbsidis
Noguchi, Yoné (7774) jbsidis
Tagore, Rabindranath (7768) jbsidis
Eliot, George (7692) jbsidis
Nesbit, E. (Edith) (7648) jbsidis
Du Bois, W. E. B. (William Edward Burghardt) (7364) jbsidis
Stowe, Harriet Beecher (7362) jbsidis
Vatsyayana (7343) jbsidis
Schopenhauer, Arthur (7317) jbsidis
Foote, Mary Hallock (7308) jbsidis
Bhide, Shivaram Parashuram (7256) jbsidis
Indrajit, Bhagavanlal (7256) jbsidis
"""
class Main(MDApp):
def build(self):
self.theme_cls.primary_palette = "Red"
return Builder.load_string(kv)
def all_pdfs(self):
return books.splitlines()
##I think this function requires something else
## for root, dirs, files in os.walk('storage/emulated/0'):
## if file in files.endswith('.pdf'):
## self.PDFs = file
## else:
## return None
def eq(self,a,b):
a.focus=True
def search(self,a,b):
a.data=[]
for x in self.all_pdfs():
if b in str(x):
a.data.append(
{
"viewclass": "JBSIDIS",
"markup": True,
"text": "[b][size=33]jbsidis: [/b][/size]"+str(x)
}
)
pass
Main().run()
这是图片,您也可以访问我的 youtube 频道并观看我的视频:Black-Hands https://www.youtube.com/channel/UCIMmPyY7XjWHk1AHlR_UdWQ/videos
推荐阅读
- c# - 由于对象的当前状态,操作无效。使用 dotnet core 5 在 eventthub 中源 microsoft.azure.amqp
- python-3.x - pipenv shell 工作但显示错误
- c# - FluentMigrator 更新值不为空的列
- javascript - 按顺序将列表附加到每个 div
- vb.net - .NET 5.0 WinForms Button_Click 事件代码未运行和多个问题
- object - 为什么我得到“堆栈对象没有属性项”?
- python - 使用 Beautiful Soup 从主页访问所有元素
- javascript - 创建平滑的滚动效果
- excel - 如何根据另一个下拉列表单元格冻结 Excel 中的下拉列表单元格,并为其分配默认值?
- r - 带有ggplot的水平条形图:条的固定距离