2013-11-20 4 views
2

Открытие того же QtGui в другой системе Windows приводит к разному отображению размера метки или размера рамки, что делает вещь уродливой. Я скомпилировал приложение pyqt4 с cx_freeze в .exe файл и когда я открываю свое приложение на другом компьютере, некоторые метки имеют меньший размер, и некоторая часть текста в ярлыке не видна. Почему это происходит и как я могу это исправить? Извините за мой плохой английский.Кабели и рамы QtGui имеют разные размеры на разных машинах

ответ

2

Qt использует собственную информацию о стиле виджета Windows, чтобы отобразить ее графический интерфейс. Это делает GUI больше похожим на собственное родное приложение. Если вы используете фиксированное позиционирование виджета для составления своего графического интерфейса, например, как правило, вы получаете QtDesigner, это может вызвать проблемы, поскольку размеры виджетов могут различаться на целевых платформах.

Альтернативой является использование элементов управления компоновкой, таких как QHBoxLayout, QVBoxLayout и т. Д., Которые изменяют размер макета для размещения размера виджетов. Другой способ - переопределить родную тему с определенной темой, чтобы ваше приложение выглядело одинаково независимо от платформы.

2

Метка и размер этикеток зависят от настройки конкретной машины, на которой выполняется приложение. Также это зависит от платформы машины. Вы можете попытаться исправить настройку шрифта вашего приложения на определенную установку методом setFont (см. Пример ниже), но имейте в виду, что это будет игнорировать настройки локального пользователя (что может включать увеличенный размер шрифта для лучшей видимости), и это может привести к ваше приложение еще хуже выглядит, если запрошенный шрифт не существует на вашем целевом компьютере.

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

Обновление: К сожалению, misundestood ваш первоначальный вопрос. Ширина метки может быть установлена ​​в определенных пределах, вызывая setMinimumWidth и setMaximumWidth с необходимой шириной. Поэтому в вашем случае я бы установил минимальную ширину, чтобы полностью показывать текст метки.

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

tnx для вашего ответа. Но я говорю о размере метки, а не тексте в ярлыке. – alizx

Смежные вопросы