2014-02-03 3 views
2

В настоящее время я использую pycharm для разработки веб-приложения python. Я хочу разработать настольное приложение с платформой QT. Я установил pyqt. Я искал про мир hello в pyqt и нашел это:Привет, мир в pyqt?

from PyQt4 import QtGui, QtCore 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.button = QtGui.QPushButton('Test', self) 
     self.button.clicked.connect(self.handleButton) 
     layout = QtGui.QVBoxLayout(self) 
     layout.addWidget(self.button) 

    def handleButton(self): 
     print ('Hello World') 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 

Но я не знаю, где положить этот код? это мой PyQt дизайнер выглядит следующим образом:
enter image description here

Можно ли сказать мне, где писать код и как обрабатывать кнопки мыши?

+1

Пожалуйста, посмотрите мой ответ на [это] [1] сообщение. Это должно объяснить основное. [1]: http://stackoverflow.com/questions/20409016/cant-start-designed-pyqt-application/20409491#20409491 – Hyperboreus

ответ

6

Похоже, что код, который вы опубликовали, был скопирован из this answer. Этот код представляет собой простой, написанный вручную пример, который вообще не предполагает использование Qt Designer. Пример

A "Hello World" с помощью Qt Designer будет начать с ui файла, как это:

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>Window</class> 
<widget class="QWidget" name="Window"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>171</width> 
    <height>61</height> 
    </rect> 
    </property> 
    <property name="windowTitle"> 
    <string>Hello World</string> 
    </property> 
    <layout class="QVBoxLayout" name="verticalLayout"> 
    <item> 
    <widget class="QPushButton" name="button"> 
    <property name="text"> 
     <string>Test</string> 
    </property> 
    </widget> 
    </item> 
    </layout> 
</widget> 
<resources/> 
<connections/> 
</ui> 

Этот файл может быть сохранен как helloworld.ui и открыт в Qt Designer.

Первое, что нужно знать о Qt Designer, заключается в том, что оно не является IDE - оно используется только для проектирования графического интерфейса, а не для основной программной логики. Логика программы записывается отдельно и затем подключается к графическому интерфейсу.

Существует два способа сделать это. Во-первых, чтобы загрузить файл ui непосредственно, используя uic module:

import sys, os 
from PyQt4 import QtGui, QtCore, uic 

DIRPATH = os.path.join(os.path.dirname(os.path.abspath(__file__))) 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     uic.loadUi(os.path.join(DIRPATH, 'helloworld.ui'), self) 
     self.button.clicked.connect(self.handleButton) 

    def handleButton(self): 
     print('Hello World') 

if __name__ == '__main__': 

    app = QtGui.QApplication(sys.argv) 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 

Это впрыскивает GUI в местный Window класс, который является подклассом соответствующий класс GUI верхнего уровня с помощью Qt Designer (который в этом случае также называется «Окно», но может быть любым, что вам нравится). Другие виджеты GUI становятся атрибутами подкласса, поэтому QPushButton доступен как self.button.

Другой способ подключения графического интерфейса пользователя с логикой программы, заключается в использовании pyuic tool для создания модуля питона из ui файла:

pyuic4 --output=helloworld.py helloworld.ui 

, которые затем могут быть импортируемым в основное приложение:

import sys 
from PyQt4 import QtGui, QtCore 
from helloworld import Ui_Window 

class Window(QtGui.QWidget, Ui_Window): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.setupUi(self) 
     self.button.clicked.connect(self.handleButton) 

    def handleButton(self): 
     print('Hello World') 

if __name__ == '__main__': 

    app = QtGui.QApplication(sys.argv) 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 

метод setupUi наследуется от сгенерированной Ui_Window класса, и делает то же самое, как uic.loadUi.

+0

После урока может быть также стоит посмотреть по адресу: // zetcode .com/GUI/PyQt4/firstprograms / – iljau

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