2014-04-18 23 views
2

問題是,如果我在Windows上創建的東西和測試在Android三星S3桂是同一件事顯示了在不同的地方不同的部件。例如GUI顯示佈局同樣爲所有屏幕Kivy

1.I創建一個小部件設置其大小爲800,600
2.Include標籤大小爲100,100 3.把它放在700,10位置,所以它應該是在右下角可見。

這在Windows上運行的測試環境OK,但是當我使用kivy啓動移動代碼,三星S3它在同一位置dosent顯示標籤。

我對http://kivy.org/docs/api-kivy.metrics.html瞭解MATIX文檔和代碼

import os 
os.environ['KIVY_METRICS_DENSITY'] = '1' 
os.environ['KIVY_DPI'] = '96' 

這是Windows中的數值,用於以下但dosent似乎在三星S3工作的這些.orifginal值是 KIVY_METRICS_DENSITY = 2 KIVY_DPI = 320 Window.size = 1028X728(我認爲)

然後我將dp添加到位置和大小的值,但在Android上它仍然是一樣的。 我知道我錯過了一些東西。有人可以建議嗎?

下面是示例代碼:

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.widget import Widget 
import os 
os.environ['KIVY_METRICS_DENSITY'] = '1' 
os.environ['KIVY_DPI'] = '96' 

class Container(Widget): 
    def __init__(self, **kwargs): 
     super(Container, self).__init__(**kwargs) 
     self.size = '800dp','600dp' 
     label = Label(text="Am i A Label ?") 
     label.size = '100dp','100dp' 
     label.pos = '700dp','10dp' 
     self.add_widget(label) 

class MyJB(App): 
    def build(self): 

     parent = Container() 
     return parent 

if __name__ == '__main__': 
    MyJB().run() 

回答

3

這聽起來像代碼是做什麼你告訴它;將標籤放置在像素中的特定位置。在默認桌面窗口中,這恰好是左下角,但在另一個設備上(或在調整窗口大小後),它可能在任何地方,具體取決於顯示器的分辨率。

您應該改用佈局,讓一切都被設置成比例,並且將調整到不同的屏幕形狀。例如,您可以使用AnchorLayout將標籤放置在右下角。

+0

我試圖與錨的佈局,甚至與電網,但我無法找到如何做到這一點,因爲我真正的大計劃,我有很多這樣的小工具,我需要穿上容器構件......請看看我的問題,我對錨佈局創建

+0

看起來新手問題給你,但但我提出了類似的問題在gridlayout。

+0

也有沒有可能做到這一點,沒有您使用的佈局和更改不同屏幕的查找分辨率,並以某種方式將分辨率值相乘以找到該屏幕中小部件的相對位置? –