2011-12-13 5 views
5

Tôi thực sự gặp khó khăn trong việc kết nối các vị trí từ Python đến Qt DesignerUI tệp. Tôi đã trải qua tất cả các hướng dẫn tôi có thể tìm thấy trên PySide (ví dụ: http://zetcode.com/gui/pysidetutorial/eventsandsignals/)Sử dụng các tệp QUiLoader và UI trong PySide để tự động tạo giao diện người dùng tại thời gian chạy

của nó khá dễ dàng khi bạn thiết lập các GUI trong mã, nhưng chúng tôi thực sự muốn sử dụng Qt Designer và các tập tin UI.

Một số chủ đề khác chỉ trỏ đến việc sử dụng pyuic để chuyển đổi .ui thành .py tệp, nhưng nếu có thể, tôi thực sự muốn thực hiện việc này tại thời gian chạy.

Đây là mã của tôi cho đến thời điểm này. tôi không có đầu mối làm thế nào để kết nối các connectBtn đến Connect trong file UI:

def initUI(self):  

    loader = QUiLoader() 
    file = QFile("designer_test.ui") 
    file.open(QFile.ReadOnly) 
    myWidget = loader.load(file, self) 
    #print(dir(myWidget)) 
    file.close() 

    layout = QtGui.QVBoxLayout() 
    layout.addWidget(myWidget) 
    self.setLayout(layout) 

    connectBtn = QtGui.QPushButton("Connect", self) 

    connectBtn.clicked.connect(self.connectClicked) 

    myWidget.setWindowTitle('Window') 
    myWidget.show() 

def connectClicked(self): 
    print("works") 

Trả lời

3

Bạn đã kiểm tra trang này: Using a Designer UI File in Your Application

Nó là dành cho C++, nhưng tôi nghĩ rằng các khái niệm cũng giống như những gì bạn đang cố gắng làm trong python.

Theo trang đó, để tải các tiện ích được tạo bởi tệp Ui, bạn cần gọi hàm findChild().

Ngoài ra, this question.

0

Tôi đã thực hiện điều này auto-connector để giúp tôi thực hiện việc này ... vui lòng xem qua.

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – cpburnz