2010-06-10 50 views
20

我正在嘗試實現一個功能。我的代碼如下。如何在字符串中按QpushButton時在QlineEdit中獲取文本?

我想在字符串中使用objectname'host'代替lineed中的文本,當用戶單擊名爲'connect'的按鈕時,會說'shost'。我怎樣才能做到這一點?我嘗試失敗了。我如何實現這個功能?

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 


class Form(QDialog): 
    def __init__(self, parent=None): 
     super(Form, self).__init__(parent) 

     le = QLineEdit() 
     le.setObjectName("host") 
     le.setText("Host") 
     pb = QPushButton() 
     pb.setObjectName("connect") 
     pb.setText("Connect") 
     layout.addWidget(le) 
     layout.addWidget(pb) 
     self.setLayout(layout) 

     self.connect(pb, SIGNAL("clicked()"),self.button_click) 

     self.setWindowTitle("Learning") 

    def button_click(self): 
    #i want the text in lineedit with objectname 
    #'host' in a string say 'shost'. when the user click 
    # the pushbutton with name connect.How do i do it? 
    # I tried and failed. How to implement this function? 




app = QApplication(sys.argv) 
form = Form() 
form.show() 
app.exec_() 

現在我該如何實現函數「button_click」?我剛開始使用pyQt!

+0

如果您發佈實際可用的代碼片段,您更有可能得到回覆。 – brianz 2010-06-10 20:04:18

回答

27

我的第一個建議是使用Designer來創建您的GUI。自己打字會很糟糕,需要更多時間,而且肯定會比設計師犯更多的錯誤。

這裏有一些PyQt tutorials,以幫助您走上正確的軌道。列表中的第一個是你應該開始的地方。

找出特定類別的可用方法的好指南是PyQt4 Class Reference。在這種情況下,您會查找QLineEdit並查看有一個text方法。

爲了回答您的具體問題:

爲了讓您的GUI元素提供給對象的其餘部分,與self.

import sys 
from PyQt4.QtCore import SIGNAL 
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout 

class Form(QDialog): 
    def __init__(self, parent=None): 
     super(Form, self).__init__(parent) 

     self.le = QLineEdit() 
     self.le.setObjectName("host") 
     self.le.setText("Host") 

     self.pb = QPushButton() 
     self.pb.setObjectName("connect") 
     self.pb.setText("Connect") 

     layout = QFormLayout() 
     layout.addWidget(self.le) 
     layout.addWidget(self.pb) 

     self.setLayout(layout) 
     self.connect(self.pb, SIGNAL("clicked()"),self.button_click) 
     self.setWindowTitle("Learning") 

    def button_click(self): 
     # shost is a QString object 
     shost = self.le.text() 
     print shost 


app = QApplication(sys.argv) 
form = Form() 
form.show() 
app.exec_() 
+0

我得到這個錯誤! AttributeError:'Form'對象沒有'le'屬性 – esafwan 2010-06-10 20:19:25

+0

您需要在'__init__'函數中命名'self.le'。無論你在「Form」類中使用它,它都應該是'self.le'。 – tgray 2010-06-10 20:30:18

+0

我沒有得到你。對不起,我剛剛開始使用這些...我使用了你給出的代碼,並且出現了錯誤。我認爲,它已經self.le – esafwan 2010-06-10 20:48:19

0

對象名稱不是很重要的前言他們。 你應該把重點是存儲lineedit對象(LE)的變量,而按鈕的對象(PB)

 
QObject(self.pb, SIGNAL("clicked()"), self.button_clicked) 

def button_clicked(self): 
    self.le.setText("shost") 

我想這是你想要的。 我希望我的問題得到了正確的答覆:)

相關問題