猕猴桃布局:不同的计算机不同的显示

时间:2018-08-15 20:18:19

标签: python layout kivy

相同的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,并具有理想的输出: Img01 - macOS Sierra 10.12.6

另一方面,我的个人Mac(具有Kivy == 1.10.1的macOS高Sierra 10.13.6)输出错误: Img02 - macOS high Sierra 10.13.6

会发生什么?

1 个答案:

答案 0 :(得分:0)

  1. 尝试使用与密度无关的像素dp
  2. 在kv文件中,有两个根。对于根,有一个根规则VQCIA:,还有一个类规则<VQCIA>:。由于在Python代码中,它使用return VQCIA(),它与kv文件中的类规则<VQCIA>:相关联。因此,请删除根规则VQCIA:以避免混淆。

kv文件-vqcia.kv

<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

Dimensions

dp
     

与密度无关的像素-基于像素的抽象单位   屏幕的物理密度。密度为1时1dp等于   1像素。在更高密度的屏幕上运行时,像素数   用来绘制1dp的比例会放大到适合屏幕尺寸的   dpi,反之则降低dpi。 dp与像素的比例将   随屏幕密度变化,但不一定直接变化   比例。使用dp单元是制作视图的简单解决方案   布局中的尺寸会针对不同的屏幕正确调整大小   密度。换句话说,它为现实世界提供了一致性   不同设备上的用户界面大小。

sp
     

与比例无关的像素-类似于dp单位,但它也是   根据用户的字体大小首选项进行缩放。我们建议您使用此   指定字体大小时的单位,因此字体大小将调整为   屏幕密度和用户的偏好。