单击按钮时如何在多个QLabel中打印?

时间:2019-03-10 11:29:08

标签: python python-3.x pyqt pyqt5

单击按钮时,如何在多个QLabel中打印?,因为它仅适用于数量,所以我也希望在项目名称和价格中使用它。我试着放多个print_click(self),它说重新定义未使用的'print_clink'不会起作用。预先感谢

我的代码:

import sys 
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QLabel, QLineEdit
from PyQt5.QtCore import pyqtSlot`

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.ItemName = QLabel('Item Name:')
        self.Item_Line = QLabel('')
        self.Item_Name = QLineEdit('')
        self.PriceName = QLabel('Price:')
        self.Price_Line = QLabel('')
        self.Price_Name = QLineEdit('')
        self.QuantityName = QLabel('Quantity:')
        self.Quantity_Line = QLabel('0')
        self.Quantity_Name = QLineEdit()   
        self.Update_button = QPushButton("Update")
        self.Update_button.clicked.connect(self.print_click)
        self.Clear_button = QPushButton("Clear")
        self.Clear_button.clicked.connect(self.clear_click)
        hbox = QHBoxLayout(self)  
        hbox.addWidget(self.ItemName)
        hbox.addWidget(self.Item_Name)
        hbox.addWidget(self.PriceName)
        hbox.addWidget(self.Price_Name)
        hbox.addWidget(self.QuantityName)
        hbox.addWidget(self.Quantity_Line)
        hbox.addWidget(self.Quantity_Name)
        hbox.addWidget(self.Update_button)
        hbox.addWidget(self.Clear_button)
        self.show()         
        self.Clear_button.clicked.connect(self.Item_Line.clear)
        self.Clear_button.clicked.connect(self.Item_Name.clear)          
        self.Clear_button.clicked.connect(self.Price_Line.clear)
        self.Clear_button.clicked.connect(self.Price_Name.clear)            
        self.Clear_button.clicked.connect(self.Quantity_Line.clear)
        self.Clear_button.clicked.connect(self.Quantity_Name.clear)           
    @pyqtSlot()
    def print_click(self):
        self.Quantity_Line.setText(self.Quantity_Name.text())

    def clear_click(self):
        self.Quantity_Line(self.Quantity_Name.text(''))
        return self.Quantity


if __name__ == "__main__":

    app = QApplication(sys.argv)
    win = Window()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

我不太确定预期的结果,但我猜您的代码中存在一些错误和冗余:

  • Price_LineItem_Line未添加到QHBoxLayout
  • 方法print_click未在相应的Price_NameItem_Name上设置Price_LineItem_Line的文本。
  • clear_click方法并不是真正有用,因为您已经连接了该按钮上所有其他元素的clear方法。

以下代码是根据您的代码改编而成的,请注意上述要点:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QLabel, QLineEdit
from PyQt5.QtCore import pyqtSlot

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.ItemName = QLabel('Item Name:')
        self.Item_Line = QLabel('')
        self.Item_Name = QLineEdit()

        self.PriceName = QLabel('Price:')
        self.Price_Line = QLabel('')
        self.Price_Name = QLineEdit()

        self.QuantityName = QLabel('Quantity:')
        self.Quantity_Line = QLabel('0')
        self.Quantity_Name = QLineEdit()

        self.Update_button = QPushButton("Update")
        self.Update_button.clicked.connect(self.print_click)
        self.Clear_button = QPushButton("Clear")

        hbox = QHBoxLayout(self)
        hbox.addWidget(self.ItemName)
        hbox.addWidget(self.Item_Line)
        hbox.addWidget(self.Item_Name)
        hbox.addWidget(self.PriceName)
        hbox.addWidget(self.Price_Line)
        hbox.addWidget(self.Price_Name)
        hbox.addWidget(self.QuantityName)
        hbox.addWidget(self.Quantity_Line)
        hbox.addWidget(self.Quantity_Name)
        hbox.addWidget(self.Update_button)
        hbox.addWidget(self.Clear_button)

        self.show()

        self.Clear_button.clicked.connect(self.Item_Line.clear)
        self.Clear_button.clicked.connect(self.Item_Name.clear)

        self.Clear_button.clicked.connect(self.Price_Line.clear)
        self.Clear_button.clicked.connect(self.Price_Name.clear)

        self.Clear_button.clicked.connect(self.Quantity_Line.clear)
        self.Clear_button.clicked.connect(self.Quantity_Name.clear)

    def print_click(self):
        self.Price_Line.setText(self.Price_Name.text())
        self.Item_Line.setText(self.Item_Name.text())
        self.Quantity_Line.setText(self.Quantity_Name.text())

if __name__ == "__main__":

    app = QApplication(sys.argv)
    win = Window()
    sys.exit(app.exec_())