2013-11-20 199 views
2

在不同的Windows系統上打開相同的QtGui會導致標籤尺寸或框架尺寸的不同顯示,使事情變得醜陋。我已將pyqt4應用程序cx_freeze編譯爲.exe文件當我在另一臺機器上打開我的應用程序時,一些標籤的尺寸較小,標籤中的部分文本無法看到。爲什麼會發生這種情況?我該如何解決?對不起,我的英語不好。QtGui標籤和框架在不同的機器上有不同的尺寸

回答

2

Qt使用本機窗口系統小部件樣式信息來呈現它的GUI。這使得GUI看起來更像是一個合適的本地應用程序。如果您使用固定的小部件定位來佈置GUI,例如您通常使用QtDesigner獲得,則可能會導致問題,因爲目標平臺上的小部件大小可能會有所不同。

另一種方法是使用佈局控件,如QHBoxLayout,QVBoxLayout等來調整佈局大小以適應窗口小部件的大小。另一種方法是用特定的主題覆蓋原生主題,這樣無論平臺如何,你的應用看起來都是一樣的。

2

標籤字體和大小取決於您運行應用程序的特定機器的設置。還取決於機器的平臺。 您可以嘗試通過setFont方法修改您的應用程序的字體設置爲一些特定的設置(請參閱下面的示例),但請注意,這會忽略本地用戶首選項(可能包括增加字體大小以提高可見性),並且可能會導致你的應用程序更糟糕的是,如果請求的字體不存在於目標計算機上。

class MainForm(QtGui.QMainWindow): 
    def __init__(self): 
     super().__init__() 
     self.setFont(QtGui.QFont("Calibri", 10)) 

更新: 對不起,您誤會了您的第一個問題。通過使用提供的所需寬度調用setMinimumWidth和setMaximumWidth,可以將標籤寬度固定在特定限制內。所以在你的情況下,我會設置最小寬度以便始終完全顯示標籤文本。

class MainForm(QtGui.QMainWindow): 
    def __init__(self): 
     super().__init__() 
     self.label = QtGui.QLabel("Test") 
     self.label.setMinimumWidth(100) 
+0

tnx您的答案但我說的是標籤尺寸而不是標籤中的文字。 – alizx