2011-12-25 30 views
9

Tôi mới sử dụng chương trình Qt và GUI tổng thể nhưng tôi đã thực hiện một chút công bằng về mã hóa trong các mô-đun bằng python và vân vân. Tôi cần phát triển các GUI đơn giản cho một số mô-đun cũ của mình.áp dụng các chức năng python trực tiếp cho thiết kế Qt làm tín hiệu

gì tôi đang cố gắng để làm có thể được đại diện bởi các ví dụ đơn giản sau:

def f(x, y): 
    z = x + y 
    return z 

Đối với chức năng này tôi sẽ cung cấp hai dòng chỉnh sửa cho x và y và một cho z. Bây giờ tôi tạo ra một nút bấm 'tính toán' và khi tôi làm điều đó tôi muốn nó để có x và y từ dòng chỉnh sửa chạy chức năng f(x,y) và cung cấp cho đầu ra để z.

Có cách nào để thực hiện việc này trực tiếp trong Qt Designer bằng cách thêm hàm f(x,y) được viết bằng python không?

Nếu không có lựa chọn thay thế nào?

Trả lời

16

Các công việc cơ bản khi viết một gui PyQt4 là:

  1. Thiết kế giao diện người dùng sử dụng Qt Designer.
  2. Tạo mô-đun Python từ tệp giao diện người dùng sử dụng pyuic4.
  3. Tạo mô-đun Ứng dụng cho logic chương trình chính.
  4. Nhập lớp GUI vào mô-đun Ứng dụng.
  5. Kết nối GUI với logic chương trình.

Vì vậy, với các tập tin UI calc.ui, bạn có thể tạo module UI với:

pyuic4 -w calc.ui > calc_ui.py 

Và sau đó tạo ra một cái gì đó module ứng dụng như thế này:

from PyQt4 import QtGui, QtCore 
from calc_ui import CalculatorUI 

class Calculator(CalculatorUI): 
    def __init__(self): 
     CalculatorUI.__init__(self) 
     self.buttonCalc.clicked.connect(self.handleCalculate) 

    def handleCalculate(self): 
     x = int(self.lineEditX.text()) 
     y = int(self.lineEditY.text()) 
     self.lineEditZ.setText(str(x + y)) 

if __name__ == '__main__': 

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

Lưu ý rằng nó giúp để đặt objectName cho mọi tiện ích trong Trình chỉnh sửa thuộc tính của Nhà thiết kế để chúng có thể dễ dàng xác định sau này. Đặc biệt, objectName của biểu mẫu chính sẽ trở thành tên lớp của lớp GUI được nhập (giả sử cờ "-w" là pyuic4 được sử dụng).

+1

nó cung cấp cho lỗi sau: chương trình gỡ lỗi nêu lên ngoại lệ unhandled AttributeError "'Máy tính' đối tượng không có thuộc tính 'buttonCalc' .những gì đã đi sai? I đặt tên đối tượng nút như buttonCalc trong Qt Designer – linuS

+1

Hãy chắc chắn rằng bạn chạy lại 'pyuic4' mỗi khi bạn lưu các thay đổi vào tệp ui của bạn. Nếu điều đó không khắc phục được, hãy thử [tệp ui này] (http://pastebin.com/Ciu8p4ry) làm ví dụ hoạt động với tập lệnh trong câu trả lời của tôi. – ekhumoro

+0

một lần nữa cùng một vấn đề.Bằng cách tôi đang sử dụng Eric IDE – linuS

Các vấn đề liên quan