【问题标题】:QtGui lables and frames have different sizes on different machinesQtGui标签和框架在不同的机器上有不同的尺寸
【发布时间】:2013-12-05 02:37:01
【问题描述】:

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

【问题讨论】:

    标签: qt user-interface pyqt qtgui


    【解决方案1】:

    Qt 使用本机 Windows 系统小部件样式信息来呈现它的 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)
      

      【讨论】:

      • tnx 为您解答。但我说的是标签大小而不是标签中的文本。
      猜你喜欢
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多