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

问题描述 投票:0回答:1

单击PushButton?时如何在多个QLabel中打印,因为它仅适用于数量我也希望它在项目名称和价格中。我试过把多个print_click(自我)它不会工作它说重新定义未使用的'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_())
python python-3.x pyqt pyqt5
1个回答
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_())
© www.soinside.com 2019 - 2024. All rights reserved.