Kant Chen
Kant Chen

Reputation: 403

How can I execute PyQt the sample of "Rapid GUI Programming with Python and Qt"?

I'm a new coding learner. I use the book "Rapid GUI Programming with Python and Qt" to learn PyQt. But, I found that I cannot execute the samples(.py files) which the book gives. Almost all samples can not be opened.

Here is one of the samples

#!/usr/bin/env python
# Copyright (c) 2007-8 Qtrac Ltd. All rights reserved.

# This program or module is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as published
# by the Free Software Foundation, either version 2 of the License, or
# version 3 of the License, or (at your option) any later version. It is
# provided for educational purposes and is distributed in the hope that
# it will be useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
# the GNU General Public License for more details.

import random
from PyQt4.QtCore import *
from PyQt4.QtGui import *


if random.choice((1, 2)) == 1:
    import ui_ticketorderdlg1 as ui_ticketorderdlg
else:
    import ui_ticketorderdlg2 as ui_ticketorderdlg


class TicketOrderDlg(QDialog,
        ui_ticketorderdlg.Ui_TicketOrderDlg):

    def __init__(self, parent=None):
        super(TicketOrderDlg, self).__init__(parent)
        self.setupUi(self)
        today = QDate.currentDate()
        self.whenDateTimeEdit.setDateRange(today.addDays(1),
                                   today.addYears(1))
        self.updateUi()
        self.customerLineEdit.setFocus()


    @pyqtSignature("QString")
    def on_customerLineEdit_textEdited(self, text):
        self.updateUi()


    @pyqtSignature("double")
    def on_priceSpinBox_valueChanged(self, value):
        self.updateUi()


    @pyqtSignature("int")
    def on_quantitySpinBox_valueChanged(self, value):
        self.updateUi()


    def updateUi(self):
        amount = self.priceSpinBox.value() * \
                 self.quantitySpinBox.value()
        enable = not self.customerLineEdit.text().isEmpty() and amount
        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(enable)
        self.amountLabel.setText("$ %0.2f" % amount)


    def result(self):
        when = self.whenDateTimeEdit.dateTime().toPyDateTime()
        return (unicode(self.customerLineEdit.text()), when,
                self.priceSpinBox.value(), self.quantitySpinBox.value())


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    form = TicketOrderDlg()
    form.show()
    app.exec_()
    print(form.result())

I use windows command and input:"python -m ticketorderdlg.py" It returns below:

C:\Python34\python.exe: Error while finding spec for 'ticketorderdlg.py'
    (<class 'AttributeError'>: 'module' object has no attribute '__path__')

what can I do? Please help me!

python version:3.4 ; PyQt version:GPL v4.11.4 for Python v3.4(x32)

Upvotes: 0

Views: 161

Answers (1)

eyllanesc
eyllanesc

Reputation: 243907

You must execute without the parameter m:

python ticketorderdlg.py

Upvotes: 1

Related Questions