Соглашение о присвоении имен F#

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

С другой стороны, макет имеет интервал по умолчанию, поэтому рекомендуется установить его на 0.

class Line(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent=parent, autoFillBackground=True)
        # Set palette
        palette1 = QPalette()
        palette1.setColor(QPalette.Window, Qt.red)

        palette2 = QPalette()
        palette2.setColor(QPalette.Window, Qt.blue)

        palettebg = QPalette()
        palettebg.setColor(QPalette.Window, Qt.green)
        self.setPalette(palettebg)

        # Set labels
        self.label1 = QLabel(text="A", autoFillBackground=True)
        self.label1.setStyleSheet('font-size: 36pt;')
        self.label1.setPalette(palette1)
        self.label1.setMinimumSize(36, 36)
        self.label1.adjustSize()

        self.label2 = QLabel(text="B", autoFillBackground=True)
        self.label2.setStyleSheet('font-size: 36pt;')
        self.label2.setPalette(palette2)
        self.label2.setMinimumSize(36, 36)
        self.label2.adjustSize()

        # Set layout
        layout = QHBoxLayout(self, spacing=0)
        layout.addWidget(self.label1)
        layout.addSpacing(10)
        layout.addWidget(self.label2)
        self.setMinimumSize(self.minimumSizeHint())
        # or
        # layout = QHBoxLayout(self, spacing=10)
        # layout.addWidget(self.label1)
        # layout.addWidget(self.label2)
        # self.setMinimumSize(self.minimumSizeHint())

enter image description here


Обновление:

Максимальный размер макета, который может быть обработан, равен размеру родительский виджет, поэтому в его случае он будет сжимать, не учитывая пробелы, решение состоит в том, чтобы установить виджет, являющийся содержимым, и в этом установить макет, чтобы макет свободно распространялся на виджет содержимого.

class Line(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent=parent, autoFillBackground=True)
        # Set palette
        palette1 = QPalette()
        palette1.setColor(QPalette.Window, Qt.red)

        palette2 = QPalette()
        palette2.setColor(QPalette.Window, Qt.blue)

        palettebg = QPalette()
        palettebg.setColor(QPalette.Window, Qt.green)
        self.setPalette(palettebg)

        # Set labels
        self.label1 = QLabel(text="A", autoFillBackground=True)
        self.label1.setStyleSheet('font-size: 36pt;')
        self.label1.setPalette(palette1)
        self.label1.setMinimumSize(36, 36)
        self.label1.adjustSize()

        self.label2 = QLabel(text="B", autoFillBackground=True)
        self.label2.setStyleSheet('font-size: 36pt;')
        self.label2.setPalette(palette2)
        self.label2.setMinimumSize(36, 36)
        self.label2.adjustSize()

        content_widget = QWidget(self)
        layout = QHBoxLayout(content_widget, spacing=10)
        layout.addWidget(self.label1)
        layout.addWidget(self.label2)
        content_widget.setFixedSize(content_widget.minimumSizeHint())

enter image description here

16
задан svick 21 December 2013 в 12:02
поделиться

5 ответов

Да, есть путаница, потому что F # за годы трансформировался с OCaml на .Net. По сути, соглашения об именах представляют собой «критическое изменение» - старый код несовместим с новым кодом.

Однако CTP от мая 2009 г. разрешил проблему.

В примечаниях к выпуску говорится ...

Соглашения об именах стандартных библиотек

Соглашения об именах, принятые для библиотеки F #, следующие:

  • Весь код .NET и F # OO использует PascalCase в соответствии с существующими рекомендациями .NET.

  • Операторы функционального программирования F #, такие как List.map предназначен для использования во внутреннем коде реализации F #. В этом коде для имен операторов используется camelCase

  • Подчеркивания использовать не следует.

Итак, ваш вопрос ...

Class.MyFunctionName or Module.my_function_name 

Ответ:

Class.MyFunctionName и Module.MyFunctionName ( см. Правку ниже! )

(применяя правило 1 выше).

По-прежнему существует некоторая путаница при сравнении с операторами программирования F # (например, List.averageBy), но производственный код F # должен использовать CamelCase и, таким образом, выглядеть как любой другой код .Net. В случае сомнений проверьте пример кода для CTP.

- Правка. 2 ноября 2019 г. -

Текущие рекомендации рекомендуют camelCase для функций на уровне модуля, поэтому он

Module.myFunctionName

, который затем делает производственный код совместимым с библиотеками F # (например. List.averageBy)

проверьте пример кода для CTP.

- Изменить. 2 ноября 2019 г. -

Текущие рекомендации рекомендуют camelCase для функций на уровне модуля, поэтому он

Module.myFunctionName

, который затем делает производственный код совместимым с библиотеками F # (например. List.averageBy)

проверьте пример кода для CTP.

- Изменить. 2 ноября 2019 г. -

Текущие рекомендации рекомендуют camelCase для функций на уровне модуля, поэтому он

Module.myFunctionName

, который затем делает производственный код совместимым с библиотеками F # (например. List.averageBy)

22
ответ дан 30 November 2019 в 17:53
поделиться

Что-либо официальное: Я думаю "не совсем все же", но каждый раз, когда VS, 2010 достигает Beta1, Вы будете, вероятно, видеть библиотеку F# в ее почти-конечной-форме, и будет много переименований относительно CTP. F#, вероятно, всегда будет немного большим количеством шизофреника, чем его кузены.NET старшего возраста, учитывая его историю.

3
ответ дан 30 November 2019 в 17:53
поделиться

Из того, что я видел с hubfs.com и других источников, это - соединение от .NET и OCaml.

я надеюсь, что они переключаются на любого и не имеют две различных конвенции и быть Microsoft, я уверен, что они пойдут с точечным сетевым стилем.

1
ответ дан 30 November 2019 в 17:53
поделиться

Мое понимание и текущее использование - то, что функции модуля / статические функции имеют нижний регистр, и функции 'экземпляра' имеют верхний регистр.

Редактирование не ответ на этот вопрос, но связанный: конвенции Форматирования F# Don Syme

2
ответ дан 30 November 2019 в 17:53
поделиться

Не уверенный существует любое действительное решение. Кажется, что, возможно, код OCaml-выхода мог бы сохранить часть своего именования, т.е. строчные методы модуля, тогда как участники OO пойдут стиль.NET.

0
ответ дан 30 November 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: