PyQt4: есть ли способ использовать UILoadable декоратор в PyQt, как это поддерживается Taurus Qt Designer (каркас Python GUI с PyQt) [дубликат]

По вопросу «что мне делать с этим» может быть много ответов.

Более «формальный» способ предотвращения таких ошибок при разработке применяя дизайн по контракту в вашем коде. Это означает, что при разработке вы должны установить инварианты класса и / или даже предпосылки для функции и .

Короче говоря, инварианты класса гарантируют, что в вашем классе будут некоторые ограничения, которые не будут нарушены при нормальном использовании (и, следовательно, класс будет not получить в несогласованном состоянии). Предпосылки означают, что данные, данные как входные данные для функции / метода, должны соответствовать установленным ограничениям и никогда не нарушать их, а постулаты означают, что вывод функции / метода должен соответствовать установленным ограничениям снова не нарушая их. Условия контракта никогда не должны нарушаться во время выполнения программы без ошибок, поэтому дизайн по контракту проверяется на практике в режиме отладки, а отключен в выпусках , чтобы максимизировать развитую производительность системы.

Таким образом, вы можете избежать случаев NullReferenceException, которые являются результатом нарушения установленных ограничений. Например, если вы используете свойство объекта X в классе, а затем попытаетесь вызвать один из его методов, а X имеет нулевое значение, то это приведет к NullReferenceException:

public X { get; set; }

public void InvokeX()
{
    X.DoSomething(); // if X value is null, you will get a NullReferenceException
}

Но если вы установите «свойство X никогда не должно иметь нулевого значения» в качестве предпосылки для метода, вы можете предотвратить описанный ранее сценарий:

//Using code contracts:
[ContractInvariantMethod]
protected void ObjectInvariant () 
{
    Contract.Invariant ( X != null );
    //...
}

По этой причине Код Контракт существует для приложений .NET.

В качестве альтернативы дизайн по контракту может быть применен с использованием утверждений .

ОБНОВЛЕНИЕ: Стоит отметить, что этот термин был придуман Бертраном Майером в связи с его дизайном языка программирования Эйфеля .

67
задан Chris 8 March 2010 в 04:01
поделиться

10 ответов

52
ответ дан Sнаđошƒаӽ 23 August 2018 в 23:55
поделиться
  • 1
    Не могли бы вы добавить, как получить доступ к переменной, как только вы это сделали? Например, pushButton? – Jonathan 13 January 2014 в 04:06
  • 2
    @JonathanLeaders Если есть кнопка, определенная в файле .ui, вы просто вызываете ее так: self.pushButton. Вы также можете загрузить ui в любой атрибут класса, который вы хотите: uic.loadUi ('uifile.ui', self.ui), и вызывать виджеты и прочее, например self.ui.pushButton. – Maxim Popravko 14 September 2015 в 13:33
8
ответ дан Akshay 23 August 2018 в 23:55
поделиться
6
ответ дан chefarov 23 August 2018 в 23:55
поделиться
  • 1
    self.ui.okButton.clicked.connect(self.function_name) дает мне TypeError: event() takes 1 positional argument but 2 were given. Как вы его решили? – Ahsanul Haque 13 December 2016 в 11:06
31
ответ дан Community 23 August 2018 в 23:55
поделиться
  • 1
    Это должен быть лучший ответ, потому что это полный пример. – Francesco Pasa 25 October 2016 в 09:15
3
ответ дан filipemr 23 August 2018 в 23:55
поделиться
6
ответ дан Jeba 23 August 2018 в 23:55
поделиться
27
ответ дан luc 23 August 2018 в 23:55
поделиться
22
ответ дан Peter O. 23 August 2018 в 23:55
поделиться
  • 1
    Я компилировал с использованием: pyuic4 helloworld.ui & gt; helloworld.py. Действительно, нужно передать аргументы -x и -o в pyuic4. Спасибо за информацию!. – muammar 23 March 2015 в 17:22
4
ответ дан reviloera 23 August 2018 в 23:55
поделиться
[g0] Использование Anaconda3 (сентябрь 2018) и дизайнера QT 5.9.5. В конструкторе QT сохраните ваш файл как пользовательский интерфейс. Откройте Anaconda. Найдите файл: cd C: .... (скопируйте / вставьте путь доступа к вашему файлу). Затем напишите: pyuic5 -x helloworld.ui -o helloworld.py (helloworld = имя вашего файла). Войти. Запустите Spyder. Откройте свой файл .py. [/G0]
0
ответ дан Pifpy 6 November 2018 в 06:32
поделиться
Другие вопросы по тегам:

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