Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Привязка чекбокса к кнопке tkinter. HELP! [RSS Feed]

#1 Дек. 21, 2016 18:27:51

fayst59
Зарегистрирован: 2016-12-21
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Привязка чекбокса к кнопке tkinter. HELP!

Здравствуйте форумчане!
Не кидайте палками, я новичок. Очень требуется Ваша помощь!
Имеется кривой кусок моего кода:

 import os
def Quit(ev):
    global root
    root.destroy()
def uslov(ev):
    if var1 == 1:
        Povolzhe()
    if var2 == 1:
        Center()
    if checkUral == 1:
        print('hola')
    if checkSz == 1:
        print('lola')
    if checkDv == 1:
        DV()
    if checkUg == 1:
        UG()
    if checkSib ==1:
        Sibir()
def Povolzhe(ev):
    # ниже стартуются файлы МР Поволжье
    os.startfile(r'c:\RepView\Alarm\Kazan OPTS 277 10.38.3.8\Repview.exe')
    os.startfile(r'C:\RepView\Alarm\Kazan OPTS 277 10.38.3.9\Repview.exe')
    os.startfile(r'C:\RepView\Alarm\Kazan OPTS 277 10.38.3.10\Repview.exe')
    os.startfile(r'C:\RepView\Alarm\Kazan OPTS 570 10.38.3.7\Repview.exe')
def Ural(ev):
    a = 1
def Center(ev):
    a = 1
def SZ(ev):
    a = 1
def UG(ev):
    a = 1
def Sibir(ev):
    a = 1
def DV(ev):
    a = 1
from tkinter import *
root = Tk()
# устанавливаем название окна
root.title("Rainbow 0.1")
# устанавливаем минимальный размер окна
root.minsize(200, 250)
# выключаем возможность изменять окно
root.resizable(width=False, height=False)
# создаем рабочую область
frame = Frame(root)
frame.grid()
m = Menu(root)  # создается объект Меню на главном окне
root.config(menu=m)  # окно конфигурируется с указанием меню для него
fm = Menu(m)  # создается пункт меню с размещением на основном меню (m)
m.add_cascade(label="Файл", menu=fm)  # пункту располагается на основном меню (m)
fm.add_command(label="Создать...")  # формируется список команд пункта меню
fm.add_command(label="Открыть")
fm.add_command(label="Выход")
hm = Menu(m)  # второй пункт меню
m.add_cascade(label="Помощь", menu=hm)
hm.add_command(label="О программе")
hm.add_command(label="Bug report")
#Создал элементы граффического интерфейса
Label(root, text="Выберите регион:").grid(row=0, sticky=W)
var1=IntVar()
var2=IntVar()
var3=IntVar()
var4=IntVar()
var5=IntVar()
var6=IntVar()
var7=IntVar()
checkPov = Checkbutton(root, text="МР Поволжье", bg="red", variable=var1, onvalue=1,offvalue=0).grid(row=1, sticky=W)
checkCen = Checkbutton(root, text="МР Центр", bg="orange", variable=var2, onvalue=1,offvalue=0).grid(row=2, sticky=W)
checkUral = Checkbutton(root, text="МР Урал", bg="gold", variable=var3, onvalue=1,offvalue=0).grid(row=3, sticky=W)
checkUg = Checkbutton(root, text="МР ЮГ", bg="green", variable=var4, onvalue=1,offvalue=0).grid(row=4, sticky=W)
checkSz = Checkbutton(root, text="МР Северо-Запад", bg="deep sky blue", variable=var5, onvalue=1,offvalue=0).grid(row=5, sticky=W)
checkSib = Checkbutton(root, text="МР Сибирь", bg="blue", variable=var6, onvalue=1,offvalue=0).grid(row=6, sticky=W)
checkDv = Checkbutton(root, text="МР Дальний Восток", bg="dark violet", variable=var7, onvalue=1,offvalue=0).grid(row=7, sticky=W)
mainbut = Button(root, text='Применить')
mainbut.bind("<Button-1>", uslov)
mainbut.place(x = 25, y = 208)
quitBtn = Button(root, text = '  Выход  ')
quitBtn.bind("<Button-1>", Quit)
quitBtn.place(x = 120, y = 208)
root.mainloop()

Суть программы заключается в том, что в открывшемся окне выставляются чекбоксы. Каждый чекбокс несет в себе функцию открытия списка программ(пример описан в функции Povolzhe(ev)). Так вот, как мне сделать так, чтобы при выборе некоторых чекбоксов и нажатии на кнопку mainbut ('Применить'), открывался список нужных программ? Проще говоря я не могу привязать выполнение заполненного чекбокса к кнопке ‘Применить’. Объясните пожалуйста, всю голову сломал!

Офлайн

#2 Янв. 14, 2017 15:58:59

Rudium
Зарегистрирован: 2015-12-06
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Привязка чекбокса к кнопке tkinter. HELP!

Не нужно привязывать выполнение заполненного чекбокса к кнопке “Применить”.
Нужно привязать к кнопке “Применить” функцию, которая считывает значения переменных и открывает программы. Значение переменной tkinter считывается методом get(). Например: var1.get()


 def open_func():
    if var1.get(): # Если единица, то истина.
        # Открываем список программ
    if var2.get():
        ....
button = Button(root, text='Применить', command=open_func)

Отредактировано Rudium (Янв. 14, 2017 16:34:50)

Офлайн

#3 Янв. 14, 2017 16:33:15

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Привязка чекбокса к кнопке tkinter. HELP!

Да можно и без global и без ООП справится…

Офлайн

#4 Янв. 14, 2017 16:35:28

Rudium
Зарегистрирован: 2015-12-06
Сообщения: 114
Репутация: +  1  -
Профиль   Отправить e-mail  

Привязка чекбокса к кнопке tkinter. HELP!

4kpt_IV
Да можно и без global и без ООП справится…
Точно. Исправил.

Офлайн

  • Начало
  • » GUI
  • » Привязка чекбокса к кнопке tkinter. HELP![RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version