ฉันกำลังพยายามแก้ไขวิดเจ็ต QLineEdit จากนั้นส่งข้อความใหม่เป็นพารามิเตอร์ไปยังฟังก์ชัน แต่จะส่งคืนข้อความต้นฉบับแทนข้อความใหม่เสมอ นี่คือตัวอย่างโค้ด
self.shortCoffee1Label = QLineEdit("0")
self.shortCoffee1Label.editingFinished.connect(self.sendValue(48, int(self.shortCoffee1Label.text())))
แล้วฟังก์ชัน sendValue
def sendValue(self, var, val):
def emmitValue():
self.messageReceived.setText("Sending new value...")
print("var received: " + str(var))
print("val received: " + str(val))
self.thread.sendValue(var, val)
return emmitValue
แต่ค่า val จะเป็น 0 เสมอ ซึ่งเป็นค่าเดิมที่ตั้งไว้ ผมทำอะไรผิดหรือเปล่า?
Function()
แต่คุณระบุด้วยฟังก์ชัน - หรือที่เรียกว่าFunction
ถ้าคุณมีพารามิเตอร์ คุณต้องการที่จะส่งผ่านคุณทำสิ่งนั้นภายในฟังก์ชันนั้น เพื่อเราจะได้สิ่งนี้self.shortCoffee1Label.editingFinished.connect(self.SendNewValue)
จากนั้นในdef SendNewValue(self):
คุณจะมีบรรทัดที่เรียกสิ่งที่คุณต้องการโดยใช้พารามิเตอร์ดังต่อไปนี้: - person Dennis Jensen   schedule 06.04.2020self.sendValue(48, int(self.shortCoffee1Label.text()))
และนั่นคือทั้งหมดที่คุณต้องการภายในฟังก์ชันนั้น หรือมีวิธีอื่นในการทำเช่นนี้ที่ซับซ้อนน้อยกว่าการเพิ่มนิพจน์ Lambda เนื่องจากละเมิด K.I.S.S. กฎของการเขียนโปรแกรม (Keep It Simple and Smart) โดยการเพิ่มความซับซ้อนที่ไม่จำเป็นเพื่อจัดวางโค้ดให้มากที่สุดในบรรทัดเดียวเท่าที่จะทำได้ ซึ่งได้รับการพิสูจน์แล้วว่าเป็นวิธีการที่ไม่ดีเมื่อนานมาแล้ว - person Dennis Jensen   schedule 06.04.2020