'python kivymd MDDataTable font error(font_name)- windows
I have a problem retrieving the database from the server, MDDataTable does not show Georgian font, it shows ????. I tried adding "font_name" but it does not work. "font_name" works: MDTextField and MDRaisedButton (.kv file). The records on the server are in Georgian(I have a problem only server database).
Here are my short codes.
main.py:
class Tab1(MDFloatLayout, MDTabsBase):
productnameN = ObjectProperty(None)
def product_lists(self, *args):
engine = create_engine('mysql+pymysql://root:@localhost/testt',
echo=False)
data = pd.read_sql('SELECT * FROM testproduct', engine)
dataf = pd.DataFrame(data)
dataf['date'] = pd.to_datetime(dataf['date']).dt.strftime('%d/%m/%Y')
values = self.productnameN.text
dff = dataf[(dataf['მრიცხველი'] == values)]
dff = dff.values.tolist()
layout = AnchorLayout()
self.product_table = MDDataTable(
pos_hint={'center_y': 0.31, 'center_x': 0.5},
size_hint=(0.9, 0.78),
elevation=15,
rows_num=100,
column_data=[
("ID", dp(25)),
("Product Name", dp(25)),
("MRP", dp(15)),
("Quantity", dp(20)),
("Product Description", dp(30)),
],
row_data=[
(f"{row[0]}", f"{row[1]}", f"{row[2]}", f"{row[3]}", f"{row[4]}") for
row in dff],
)
self.add_widget(self.product_table)
return layout
def on_enter(self):
self.product_lists()
class Tab2(MDFloatLayout, MDTabsBase):
pass
class Tab3(MDFloatLayout, MDTabsBase):
pass
class DemoApp(MDApp):
def build(self):
sm = ScreenManager()
sm.add_widget(Builder.load_file("testwidgets.kv"))
return sm
DemoApp().run()
testwidgets.kv:
MDScreen:
name: 'sellerprofile'
MDNavigationLayout:
size : root.width, root.height
ScreenManager:
id: screen_manager
Screen:
name: "mddatatable"
BoxLayout:
orientation: 'vertical'
MDToolbar:
id: toolbar
title: "LOCAL VENDOR"
md_bg_color: 60/255, 194/255, 89/255, 1
MDTabs:
lock_swiping: True
font_name: "babuka.ttf"
background_color: 60/255, 194/255, 89/255, 1
Tab1:
title: "produqti"
Tab2:
title: "produqtis damateba"
Tab3:
title: "Tornike"
<Tab1>:
productnameN: productnameN
MDTextField:
elevation: 13
id : productnameN
hint_text: "Product Nu"
font_name: "babuka.ttf"
mode: "rectangle"
size_hint: .4, .1
pos_hint: {"center_x": .5,"center_y": .8}
MDRaisedButton:
elevation: 13
font_size: "16sp"
font_name: "babuka.ttf"
size_hint: .4, .1
text_color: 0/255,0/255,0/255,1
md_bg_color: 60/255, 194/255, 89/255, 1
text: 'See Products'
on_press:
root.on_enter()
Snackbar(text="Tap again to see recently added
products",snackbar_x="10dp",snackbar_y="10dp",size_hint_x=.9,).open()
pos_hint: {'center_x': .5, 'center_y': .9}
<Tab2>:
<Tab3>:
Solution 1:[1]
I had the same issue with Arabic and Asian languages.
This post suggests a solution: How do i change font of MDDataTable in KivyMD?
You should use the [font=myfont.ttf]my text[/font] markdown.
.otf fonts are also supported.
Example:
dd.append((datetime.fromisoformat(obj['testing_date']).strftime("%d.%m.%Y (%H:%M:%S)"),
"[font="+ self.font_name +"]" +obj['Number']+ "[/font]",
"[font="+ self.font_name +"]" +buf_A+ "[/font]",
"[font="+ self.font_name +"]" +buf_B+ "[/font]",
'{:.2f}'.format((obj['Time_b'] - obj['Time_a'])/obj['Time_a']) ) )
self.data_tables = MDDataTable(
use_pagination=True,
check=True,
column_data=[
("[font="+ self.font_name +"]" + self.date_header + "[/font]", dp(30)),
("ID", dp(30)),
("[font="+ self.font_name +"]" + self.part_a_header + "[/font]", dp(60)),
("[font="+ self.font_name +"]" + self.part_b_header + "[/font]", dp(60)),
("[font="+ self.font_name +"]" + self.part_interference + "[/font]", dp(30)),
],
row_data=dd,
sorted_on="Date",
sorted_order="ASC",
elevation=2,
)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Yury Zontov |

