【发布时间】:2013-12-05 02:37:01
【问题描述】:
在不同的 Windows 系统上打开相同的 QtGui 会导致标签大小或框架大小的显示不同,这会使事情变得丑陋。我已经将我的 pyqt4 应用程序与 cx_freeze 编译为 .exe 文件,当我打开我的应用程序时在另一台机器上,一些标签的尺寸较小,标签中的某些文本无法看到。为什么会发生这种情况,我该如何解决?对不起我的英语不好。
【问题讨论】:
标签: qt user-interface pyqt qtgui
在不同的 Windows 系统上打开相同的 QtGui 会导致标签大小或框架大小的显示不同,这会使事情变得丑陋。我已经将我的 pyqt4 应用程序与 cx_freeze 编译为 .exe 文件,当我打开我的应用程序时在另一台机器上,一些标签的尺寸较小,标签中的某些文本无法看到。为什么会发生这种情况,我该如何解决?对不起我的英语不好。
【问题讨论】:
标签: qt user-interface pyqt qtgui
Qt 使用本机 Windows 系统小部件样式信息来呈现它的 GUI。这使得 GUI 看起来更像是一个适当的本机应用程序。如果您使用固定的小部件定位来布置您的 GUI,例如您通常使用 QtDesigner,这可能会导致问题,因为小部件的大小可能会在目标平台上有所不同。
另一种方法是使用布局控件,例如 QHBoxLayout、QVBoxLayout 等,它们会调整布局大小以适应小部件的大小。另一种方法是用特定主题覆盖原生主题,这样无论平台如何,您的应用看起来都一样。
【讨论】:
标签字体和大小取决于您运行应用程序的特定机器的设置。这也取决于机器的平台。 您可以尝试通过 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)
【讨论】: