标签不会更新(PyQt应用程序)

时间:2016-05-12 19:36:15

标签: python python-2.7 pyqt qlabel

好吧,我正在尝试制作一个应用程序,允许教师给予或从学生那里获得积分。我花了好几个小时试图让它发挥作用,现在我正在放弃。每次按下+1或-1按钮时我都需要更改标签,但标签不会让步。这是我达到的最远(实际代码接近底部):

def home(self):
    self.actionOpen.triggered.connect(self.open)

    self.points_1 = 0
    self.points_2 = 0
    self.points_3 = 0
    self.points_4 = 0
    self.points_5 = 0
    self.points_6 = 0
    self.points_7 = 0
    self.points_8 = 0
    self.points_9 = 0
    self.points_10 = 0
    self.points_11 = 0
    self.points_12 = 0
    self.points_13 = 0
    self.points_14 = 0
    self.points_15 = 0
    self.points_16 = 0
    self.points_17 = 0
    self.points_18 = 0
    self.points_19 = 0
    self.points_20 = 0
    self.points_21 = 0
    self.points_22 = 0
    self.points_23 = 0
    self.points_24 = 0
    self.points_25 = 0
    self.points_26 = 0
    self.points_27 = 0
    self.points_28 = 0
    self.points_29 = 0
    self.points_30 = 0

def open(self):
    self.file_name = QtGui.QFileDialog.getOpenFileName(self, 'Open File', 
        'C:\Users\Maarij\Desktop\Programming\Final Projects\Behaviour Points',
        "Text files (*.txt)")
    with open(self.file_name, 'r') as document:
        self.student_points = {}
        for line in document:
            line = line.split()
            if not line:
                continue
            self.student_points[line[0]] = line[1:]
    self.label_set()


def label_set(self):
    self.name_label1.setText("%s - %s points" % (self.student_points['1'][0], self.points_1))
    self.name_label2.setText("%s - %s points" % (self.student_points['2'][0], self.points_2))
    self.name_label3.setText("%s - %s points" % (self.student_points['3'][0], self.points_3))
    self.name_label4.setText("%s - %s points" % (self.student_points['4'][0], self.points_4))
    self.name_label5.setText("%s - %s points" % (self.student_points['5'][0], self.points_5))
    self.name_label6.setText("%s - %s points" % (self.student_points['6'][0], self.points_6))
    self.name_label7.setText("%s - %s points" % (self.student_points['7'][0], self.points_7))
    self.name_label8.setText("%s - %s points" % (self.student_points['8'][0], self.points_8))
    self.name_label9.setText("%s - %s points" % (self.student_points['9'][0], self.points_9))
    self.name_label10.setText("%s - %s points" % (self.student_points['10'][0], self.points_10))
    self.name_label11.setText("%s - %s points" % (self.student_points['11'][0], self.points_11))
    self.name_label12.setText("%s - %s points" % (self.student_points['12'][0], self.points_12))
    self.name_label13.setText("%s - %s points" % (self.student_points['13'][0], self.points_13))
    self.name_label14.setText("%s - %s points" % (self.student_points['14'][0], self.points_14))
    self.name_label15.setText("%s - %s points" % (self.student_points['15'][0], self.points_15))
    self.name_label16.setText("%s - %s points" % (self.student_points['16'][0], self.points_16))
    self.name_label17.setText("%s - %s points" % (self.student_points['17'][0], self.points_17))
    self.name_label18.setText("%s - %s points" % (self.student_points['18'][0], self.points_18))
    self.name_label19.setText("%s - %s points" % (self.student_points['19'][0], self.points_19))
    self.name_label20.setText("%s - %s points" % (self.student_points['20'][0], self.points_20))
    self.name_label21.setText("%s - %s points" % (self.student_points['21'][0], self.points_21))
    self.name_label22.setText("%s - %s points" % (self.student_points['22'][0], self.points_22))
    self.name_label23.setText("%s - %s points" % (self.student_points['23'][0], self.points_23))
    self.name_label24.setText("%s - %s points" % (self.student_points['24'][0], self.points_24))
    self.name_label25.setText("%s - %s points" % (self.student_points['25'][0], self.points_25))
    self.name_label26.setText("%s - %s points" % (self.student_points['26'][0], self.points_26))
    self.name_label27.setText("%s - %s points" % (self.student_points['27'][0], self.points_27))
    self.name_label28.setText("%s - %s points" % (self.student_points['28'][0], self.points_28))
    self.name_label29.setText("%s - %s points" % (self.student_points['29'][0], self.points_29))
    self.name_label30.setText("%s - %s points" % (self.student_points['30'][0], self.points_30))

    self.plus_point()


def plus_point(self):
    self.plus_one1.clicked.connect(self.adder(1))
    self.plus_one2.clicked.connect(self.adder(2))
    self.plus_one3.clicked.connect(self.adder(3))
    self.plus_one4.clicked.connect(self.adder(4))
    self.plus_one5.clicked.connect(self.adder(5))
    self.plus_one6.clicked.connect(self.adder(6))
    self.plus_one7.clicked.connPect(self.adder(7))
    self.plus_one8.clicked.connect(self.adder(8))
    self.plus_one9.clicked.connect(self.adder(9))
    self.plus_one10.clicked.connect(self.adder(10))
    self.plus_one11.clicked.connect(self.adder(11))        
    self.plus_one12.clicked.connect(self.adder(12))
    self.plus_one13.clicked.connect(self.adder(13))
    self.plus_one14.clicked.connect(self.adder(14))
    self.plus_one15.clicked.connect(self.adder(15))
    self.plus_one16.clicked.connect(self.adder(16))
    self.plus_one17.clicked.connect(self.adder(17))
    self.plus_one18.clicked.connect(self.adder(18))
    self.plus_one19.clicked.connect(self.adder(19))
    self.plus_one20.clicked.connect(self.adder(20))
    self.plus_one21.clicked.connect(self.adder(21))
    self.plus_one22.clicked.connect(self.adder(22))
    self.plus_one23.clicked.connect(self.adder(23))
    self.plus_one24.clicked.connect(self.adder(24))
    self.plus_one25.clicked.connect(self.adder(25))
    self.plus_one26.clicked.connect(self.adder(26))
    self.plus_one27.clicked.connect(self.adder(27))
    self.plus_one28.clicked.connect(self.adder(28))
    self.plus_one29.clicked.connect(self.adder(29))
    self.plus_one30.clicked.connect(self.adder(30))

def adder(self, num):
    if num == 1:
        self.points_1 += 1
        self.label_set()
    elif num == 2:
        self.points_2 += 1
        self.label_set()
    elif num == 3:
        self.points_3 += 1
        self.label_set()
    elif num == 4:
        self.points_4 += 1
        self.label_set()
    elif num == 5:
        self.points_5 += 1
        self.label_set()
    elif num == 6:
        self.points_6 += 1
        self.label_set()
    elif num == 7:
        self.points_7 += 1
        self.label_set()
    elif num == 8:
        self.points_8 += 1
        self.label_set()
    elif num == 9:
        self.points_9 += 1
        self.label_set()
    elif num == 10:
        self.points_10 += 1
        self.label_set()
    elif num == 11:
        self.points_11 += 1
        self.label_set()
    elif num == 12:
        self.points_12 += 1
        self.label_set()
    elif num == 13:
        self.points_13 += 1
        self.label_set()
    elif num == 14:
        self.points_14 += 1
        self.label_set()
    elif num == 15:
        self.points_15 += 1
        self.label_set()
    elif num == 16:
        self.points_16 += 1
        self.label_set()
    elif num == 17:
        self.points_17 += 1
        self.label_set()
    elif num == 18:
        self.points_18 += 1
        self.label_set()
    elif num == 19:
        self.points_19 += 1
        self.label_set()
    elif num == 20:
        self.points_20 += 1
        self.label_set()
    elif num == 21:
        self.points_21 += 1
        self.label_set()
    elif num == 22:
        self.points_22 += 1
        self.label_set()
    elif num == 23:
        self.points_23 += 1
        self.label_set()
    elif num == 24:
        self.points_24 += 1
        self.label_set()
    elif num == 25:
        self.points_25 += 1
        self.label_set()
    elif num == 26:
        self.points_26 += 1
        self.label_set()
    elif num == 27:
        self.points_27 += 1
        self.label_set()
    elif num == 28:
        self.points_28 += 1
        self.label_set()
    elif num == 29:
        self.points_29 += 1
        self.label_set()
    elif num == 30:
        self.points_30 += 1
        self.label_set()
    else:
        self.label_set()

1 个答案:

答案 0 :(得分:0)

有几个问题。

第一个问题,正如评论中指出的那样,您需要将callable传递给.connect()。在您的示例中,您实际上是在连接操作期间调用adder()函数。

第二个问题是,您点击按钮时每次添加信号连接。您只需要建立一次连接,通常在您的小部件__init__中。

以下是解决此问题的方法。

  1. 请勿从plus_point()
  2. 致电label_set
  3. plus_point()函数调用home(我假设它只调用一次?),或者在__init__方法中调用{。}}。
  4. plus_point中建立您的联系
  5. self.plus_one1.clicked.connect(lambda: self.adder(1))