相同的python布局代码返回不同的GUI。我非常困惑:
# ---------- VQCIA.kv ----------
VQCIA:
<VQCIA>:
orientation: "vertical"
goi: goi
padding: 10
spacing: 10
size: 400, 200
pos: 200, 200
size_hint:None,None
BoxLayout:
Label:
text: "Enter gene of interest with TAIR ID:"
font_size: '25sp'
BoxLayout:
TextInput:
hint_text: 'AT3G20770'
multiline: False
font_size: '25sp'
id: goi
BoxLayout:
Button:
text: "Submit"
size_hint_x: 15
on_press: root.submit_goi()
# ---------- vqcia.py ----------
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class VQCIA(BoxLayout):
# Connects the value in the TextInput widget to these
# fields
goi = ObjectProperty()
def submit_goi(self):
# Get the student name from the TextInputs
goi = self.goi.text
print goi
return
class VQCIAApp(App):
def build(self):
return VQCIA()
dbApp = VQCIAApp()
dbApp.run()
我的实验室计算机是macOS Sierra 10.12.6,具有Kivy == 1.10.1,并具有理想的输出:
另一方面,我的个人Mac(具有Kivy == 1.10.1的macOS高Sierra 10.13.6)输出错误:
会发生什么?
答案 0 :(得分:0)
dp
。VQCIA:
,还有一个类规则<VQCIA>:
。由于在Python代码中,它使用return VQCIA()
,它与kv文件中的类规则<VQCIA>:
相关联。因此,请删除根规则VQCIA:
以避免混淆。<VQCIA>: # class rule for root widget
orientation: "vertical"
goi: goi
padding: dp(10)
spacing: dp(10)
size: dp(400), dp(200)
pos: dp(200), dp(200)
size_hint: None, None
dp
与密度无关的像素-基于像素的抽象单位 屏幕的物理密度。密度为1时1dp等于 1像素。在更高密度的屏幕上运行时,像素数 用来绘制1dp的比例会放大到适合屏幕尺寸的 dpi,反之则降低dpi。 dp与像素的比例将 随屏幕密度变化,但不一定直接变化 比例。使用dp单元是制作视图的简单解决方案 布局中的尺寸会针对不同的屏幕正确调整大小 密度。换句话说,它为现实世界提供了一致性 不同设备上的用户界面大小。
sp
与比例无关的像素-类似于dp单位,但它也是 根据用户的字体大小首选项进行缩放。我们建议您使用此 指定字体大小时的单位,因此字体大小将调整为 屏幕密度和用户的偏好。