QtGui标签和框架在不同的机器上有不同的尺寸

时间:2013-11-20 21:14:48

标签: qt user-interface pyqt qtgui

在不同的Windows系统上打开相同的QtGui会导致标签大小或帧大小的不同显示,这会使事情变得丑陋。我已将pyqt4应用程序与cx_freeze编译为.exe文件我在另一台机器上打开我的应用程序,有些标签尺寸较小,标签中的部分文字无法看到。为什么会发生这种情况,我该如何解决?抱歉我的英语不好。

2 个答案:

答案 0 :(得分:2)

Qt使用本机Windows系统小部件样式信息来呈现它的GUI。这使得GUI看起来更像是一个合适的本机应用程序。如果您使用固定小部件定位来布置GUI,例如您通常使用QtDesigner,则可能会导致问题,因为小部件大小可能会因目标平台而异。

另一种方法是使用QHBoxLayout,QVBoxLayout等布局控件来调整布局大小以适应窗口小部件的大小。另一种方法是使用特定主题覆盖原生主题,这样无论平台如何,您的应用都会看起来相同。

答案 1 :(得分: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)