Используйте значения кнопки tkinter после закрытия окна - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в tkinter.Я пытаюсь создать всплывающую форму, инициированную из скрипта, которая предложит несколько флажков для установки нужных мне переменных в скрипте после закрытия окна.Я в порядке, когда открыт кадр, но я не могу найти способ передать переменные для последующего использования.В приведенном ниже коде я хотел бы добавить еще одну кнопку, которая установит эти переменные для varPDF и varSHP (global?) И закроет окно.

from tkinter import *

class mainwindow():
    def __init__(self, master):

        def setValues(var, entry):
            if varPDF.get() == True:
                print('varPDF is 1')
            else:
                print('varPDF is 0')
            if varSHP.get() == True:
                print('varPDF is 1')
            else:
                print('varSHP is 0')

            print('PDF:', varPDF.get(), ';', 'SHP: ', varSHP.get())

        self.master = master
        window = (self.master)

        varPDF = BooleanVar()
        checkbutton = Checkbutton(window, text="PDF", variable=varPDF)
        checkbutton.grid(column=0, row=0)

        varSHP = BooleanVar()
        checkbutton = Checkbutton(window, text="SHP", variable=varSHP)
        checkbutton.grid(column=0, row=1)

        button1 = Button(window,text=u"Quit", command=self.end)
        button1.grid(column=2, row=3)

        button2 = Button(window,text=u"Show", command=lambda: setValues(varPDF, varSHP))
        button2.grid(column=1, row=3)

    def end(self):
        self.master.destroy()

def main():
    root = Tk()
    window = mainwindow(root)
    root.mainloop()

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 11 октября 2018

Мне удалось найти решение, используя глобальные переменные и настраивая функции, которые устанавливают их при нажатии кнопки.Возможно, это не самое элегантное решение, но оно работает.

##############################################################
# SET GLOBAL VARS
global sVar
sVar = 'STOPIT'
global globPDF
globPDF = 0
global globSHP
globSHP = 0

##############################################################
# INPUT DIALOG
from tkinter import *
from tkinter import ttk

class mainwindow():
    def __init__(self, master):

        def set_globPDF_to_one():
            global globPDF
            globPDF = 1
        def set_globPDF_to_zero():
            global globPDF
            globPDF = 0     

        def set_globSHP_to_one():
            global globSHP
            globSHP = 1
        def set_globSHP_to_zero():
            global globSHP
            globSHP = 0

        def setValues():
            if varPDF.get() == True:
                set_globPDF_to_one()
            else:
                set_globPDF_to_zero()

            if varSHP.get() == True:
                set_globSHP_to_one()
            else:
                set_globSHP_to_zero()

        self.master = master
        window = (self.master)

        ttk.Label(window, text="Select Output:").grid(column=1
                 , row=1, sticky=W)

        varPDF = BooleanVar()
        cbxPDF = Checkbutton(window, text="PDF",
                             variable=varPDF, command=lambda: setValues())
        cbxPDF.grid(column=1, row=2, sticky=W)

        varSHP = BooleanVar()
        cbxSHP = Checkbutton(window, text="SHP",
                             variable=varSHP, command=lambda: setValues())
        cbxSHP.grid(column=1, row=3, sticky=W)

        btnQuit = Button(window,text=u"Quit", command=self.end)
        btnQuit.grid(column=2, row=4, sticky=E, pady=4, padx=10)

        btnSbmt = Button(window,text=u"Submit", command=self.submit)
        btnSbmt.grid(column=1, row=4, sticky=W, pady=4, padx=10)

    def submit(self):
        def set_sVar_to_run():
            global sVar
            sVar = 'COPYIT'

        set_sVar_to_run()
        self.master.destroy()

    def end(self):
        def set_sVar_to_stop():
            global sVar
            sVar = 'STOPIT'

        set_sVar_to_stop()
        print()
        print('Quit')
        self.master.destroy()

def main():
    root = Tk()
    window = mainwindow(root)
    root.lift()
    root.attributes('-topmost',True)
    root.after_idle(root.attributes,'-topmost',True)
    root.mainloop()

if __name__ == '__main__':
    main()

# show output variables
print('sVar: '+sVar)
print('globPDF: '+str(globPDF))
print('globSHP: '+str(globSHP))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...