Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

functions in checkbox

Is it possible to change the text_color in a checkbox item?
Or is it possible to log something different from the content of the text in the checkbox?
My text is quite long. I'd prefer to log numbers for the different options in the group (as almost always in groups).
I now made a workaround, by putting numbers in the text of the checkboxes and the real text into a labels.
It would be nice to set the numbers 'white', so you don't see them anymore.

Here is my code.

var.Phase='education'
var.Stim='edu'

def edu_val():
    """Checks whether at least one field has been filled out"""
    return var.Resp in [1,2,3,4,5,6] 

edu = Form(validator=edu_val, cols=[4,1,12,4], rows=[3,1,1,1,1,1,1,1,1,3], spacing=10, margins=(100, 100, 100, 100))
labelx = Label(text=u'Höchster Bildungsabschluss', frame=False, center=False)
label1 = Label(text=u'Pflichtschule', center=False)
label2 = Label(text=u'Sekundärabschluss (mittlere Reife)', center=False)
label3 = Label(text=u'Sekundärabschluss (Lehre)', center=False)
label4 = Label(text=u'Sekundärabschluss (Matura/Abitur)', center=False)
label5 = Label(text=u'Tertiärabschluss (Akademie/Kolleg)', center=False)
label6 = Label(text=u'Tertiärabschluss (Universität/Hochschule)', center=False)

checkbox1 = Checkbox(text='1', group='education', var='Resp')
checkbox2 = Checkbox(text='2', group='education', var='Resp')
checkbox3 = Checkbox(text='3', group='education', var='Resp')
checkbox4 = Checkbox(text='4', group='education', var='Resp')
checkbox5 = Checkbox(text='5', group='education', var='Resp')
checkbox6 = Checkbox(text='6', group='education', var='Resp')
button = Button(text='Ok', frame=True, center=True)
edu.set_widget(labelx   , (2, 1))
edu.set_widget(checkbox1, (1, 2))
edu.set_widget(checkbox2, (1, 3))
edu.set_widget(checkbox3, (1, 4))
edu.set_widget(checkbox4, (1, 5))
edu.set_widget(checkbox5, (1, 6))
edu.set_widget(checkbox6, (1, 7))
edu.set_widget(label1   , (2, 2))
edu.set_widget(label2   , (2, 3))
edu.set_widget(label3   , (2, 4))
edu.set_widget(label4   , (2, 5))
edu.set_widget(label5   , (2, 6))
edu.set_widget(label6   , (2, 7))
edu.set_widget(button   , (2, 8))
edu._exec()

Comments

  • Is it possible to change the text_color in a checkbox item?

    Yes, that's quite easy because you can use css styling, like so:

    checkbox1 = Checkbox(
        text='<span style="color:red;">1</span>',
        group='education',
        var='Resp'
    )
    

    Or is it possible to log something different from the content of the text in the checkbox?

    Not really, although you can monkey-patch the CheckBox widget, such as with the code below. (Personally, I think your solution of using numbers as the checkbox text is quite ok, though.)

    def wrap_checkbox(form, checkbox, new_value):
    
        """Monkey-patches a checkbox so that it uses a custom value for
        the variable, rather than the text on the checkbox.
        """
    
        def wrap_set_var(fnc):
    
            def inner(val, var=None):
    
                orig_text = checkbox.text
                checkbox.text = new_value
                fnc(val, var)
                checkbox.text = orig_text
    
            return inner
    
        checkbox = checkbox.construct(form)
        checkbox.set_var = wrap_set_var(checkbox.set_var)
        return checkbox
    
    
    checkbox1 = Checkbox(
        text='<span style="color:red;">1</span>',
        group='education',
        var='Resp'
    )
    checkbox1 = wrap_checkbox(edu, checkbox1, new_value='this will be used for the variable')
    
  • Thank you for that solution. If you change the color, my workaround does not work anymore, because it logs var.Resp= 5

    So i used your monkey-patch. :)
    Maybe it helps someone else who wants to assess educational levels.

    var.Phase='education'
    var.Stim='edu'
    
    def edu_val():
        """Checks whether at least one field has been filled out"""
        return var.Resp in [1,2,3,4,5,6] 
    
    edu = Form(validator=edu_val, cols=[4,1,12,4], rows=[3,1,1,1,1,1,1,1,1,3], spacing=10, margins=(100, 100, 100, 100))
    labelx = Label(text=u'Höchster Bildungsabschluss', frame=False, center=False)
    
    list_checkboxes = ['checkbox1','checkbox2','checkbox3','checkbox4','checkbox5','checkbox6']
    edu_levels = ['Pflichtschule','Sekundärabschluss (mittlere Reife)','Sekundärabschluss (Lehre)','Sekundärabschluss (Matura/Abitur)','Tertiärabschluss (Akademie/Kolleg)','Tertiärabschluss (Universität/Hochschule)']
    
    for i in range(6):
        def wrap_checkbox(edu, checkbox, new_value):
            """Monkey-patches a checkbox so that it uses a custom value for
            the variable, rather than the text on the checkbox.
            """
            def wrap_set_var(fnc):
                def inner(val, var=None):
                    orig_text = checkbox.text
                    checkbox.text = new_value
                    fnc(val, var)
                    checkbox.text = orig_text
                return inner
            checkbox = checkbox.construct(edu)
            checkbox.set_var = wrap_set_var(checkbox.set_var)
            return checkbox
        checkbox = Checkbox(
            text=edu_levels[i],
            group='education',
            var='Resp'
        )
        list_checkboxes[i] = wrap_checkbox(edu, checkbox, new_value=i+1)
        edu.set_widget(list_checkboxes[i], (1, i+2))
    
    button = Button(text='Ok', frame=True, center=True)
    edu.set_widget(labelx   , (2, 1))
    edu.set_widget(button   , (2, 8))
    edu._exec()
    
Sign In or Register to comment.

agen judi bola , sportbook, casino, togel, number game, singapore, tangkas, basket, slot, poker, dominoqq, agen bola. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 50.000 ,- bonus cashback hingga 10% , diskon togel hingga 66% bisa bermain di android dan IOS kapanpun dan dimana pun. poker , bandarq , aduq, domino qq , dominobet. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 10.000 ,- bonus turnover 0.5% dan bonus referral 20%. Bonus - bonus yang dihadirkan bisa terbilang cukup tinggi dan memuaskan, anda hanya perlu memasang pada situs yang memberikan bursa pasaran terbaik yaitu http://45.77.173.118/ Bola168. Situs penyedia segala jenis permainan poker online kini semakin banyak ditemukan di Internet, salah satunya TahunQQ merupakan situs Agen Judi Domino66 Dan BandarQ Terpercaya yang mampu memberikan banyak provit bagi bettornya. Permainan Yang Di Sediakan Dewi365 Juga sangat banyak Dan menarik dan Peluang untuk memenangkan Taruhan Judi online ini juga sangat mudah . Mainkan Segera Taruhan Sportbook anda bersama Agen Judi Bola Bersama Dewi365 Kemenangan Anda Berapa pun akan Terbayarkan. Tersedia 9 macam permainan seru yang bisa kamu mainkan hanya di dalam 1 ID saja. Permainan seru yang tersedia seperti Poker, Domino QQ Dan juga BandarQ Online. Semuanya tersedia lengkap hanya di ABGQQ. Situs ABGQQ sangat mudah dimenangkan, kamu juga akan mendapatkan mega bonus dan setiap pemain berhak mendapatkan cashback mingguan. ABGQQ juga telah diakui sebagai Bandar Domino Online yang menjamin sistem FAIR PLAY disetiap permainan yang bisa dimainkan dengan deposit minimal hanya Rp.25.000. DEWI365 adalah Bandar Judi Bola Terpercaya & resmi dan terpercaya di indonesia. Situs judi bola ini menyediakan fasilitas bagi anda untuk dapat bermain memainkan permainan judi bola. Didalam situs ini memiliki berbagai permainan taruhan bola terlengkap seperti Sbobet, yang membuat DEWI365 menjadi situs judi bola terbaik dan terpercaya di Indonesia. Tentunya sebagai situs yang bertugas sebagai Bandar Poker Online pastinya akan berusaha untuk menjaga semua informasi dan keamanan yang terdapat di POKERQQ13. Kotakqq adalah situs Judi Poker Online Terpercayayang menyediakan 9 jenis permainan sakong online, dominoqq, domino99, bandarq, bandar ceme, aduq, poker online, bandar poker, balak66, perang baccarat, dan capsa susun. Dengan minimal deposit withdraw 15.000 Anda sudah bisa memainkan semua permaina pkv games di situs kami. Jackpot besar,Win rate tinggi, Fair play, PKV Games