Как сделать графический интерфейс с использованием Tkinter в формате, указанном ниже? - PullRequest
0 голосов
/ 07 марта 2019

В приведенном ниже коде я хочу создать графический интерфейс таким образом, чтобы: 1) В верхнем фрейме: 1-я строка: «x» (кнопка-флажок), справа от «x» (кнопка-флажок) должно быть «Выберите xFile».«(кнопка) и право« Выбрать xFile »(кнопка) должно быть« очищено »(кнопка) и аналогично во 2-й строке: для« y ».Только когда проверена кнопка «x», кнопка «выбрать xFile» должна быть включена.И при нажатии на «выбрать xFile», он должен открыть диалоговое окно файла.И содержимое выбранного файла должно отображаться с помощью «окна описания» под «Входными данными» (метка) в среднем кадре (с горизонтальной и вертикальной полосой прокрутки).А когда нажата кнопка «очистить», необходимо очистить только содержимое выбранного файла (выбранный файл x или y) в «окне описания» и включить «Выбор файла x» (кнопка) или «Выбор файла y» (кнопка).выполнить задачу еще раз (т.е. открыть диалоговое окно файла).Внизу «окна описания» должна быть кнопка «Сброс», а справа от кнопки «Сброс» должна быть кнопка «Отправить» в средней части средней рамки.При нажатии кнопки «Сброс» все содержимое, отображаемое в «окне описания», должно быть очищено, а все флажки должны быть сняты, чтобы пользователь мог снова выполнить процесс выбора.В нижнем фрейме, ниже «Вывод модели» (метка), должно быть «окно описания» вместе с «горизонтальной» и «вертикальной» полосой прокрутки.Внизу «окна описания» должна быть кнопка «Выход», расположенная посередине «нижней рамки».

from tkinter import *

def forButton1():
    filename1 = askopenfilename()

    with open(filename1) as f:
        for i in f:
            myList.insert(END, i)

    print(filename1)

def forButton2():
    filename1 = askopenfilename()

    with open(filename1) as f:
        for i in f:
            myList.insert(END, i)

    print(filename1)

def forButton7():
    root.destroy()

root = Tk()
root.title("Spatialization of DSSAT")

topFrame = LabelFrame(root, text = "Select input file")

MyVar1 = IntVar()
MyVar2 = IntVar()

MyCheckbutton1 = Checkbutton(topFrame, text="x", variable=MyVar1)
#MyCheckbutton1.grid(row=0, column=0)
MyCheckbutton1.pack()

MyCheckbutton2 = Checkbutton(topFrame, text="y", variable=MyVar2)
#MyCheckbutton2.grid(row=1, column=0)
MyCheckbutton2.pack()

Button1 = Button(topFrame, text = "Choose xFile", command = forButton1)
#button1.grid(row=0, column=1)
Button1.pack()
Button2 = Button(topFrame, text = "Choose yFile", command = forButton2)
#button2.grid(row=0, column=1)
Button2.pack()
Button3 = Button(topFrame, text = "Clear")
Button3.pack()
Button4 = Button(topFrame, text = "Clear")
Button4.pack()
topFrame.pack(side=TOP)

middleFrame = Frame(root)
label1 = Label(middleFrame, text = "Input data:")
label1.grid(row = 4)


scrollbar = Scrollbar(middleFrame)


myList = Listbox(middleFrame, yscrollcommand = scrollbar.set)
myList.pack()
scrollbar.config( command = myList.yview )
scrollbar.pack()

Button5 = Button(middleFrame, text = "Reset")
#button1.grid(row=0, column=1)
Button5.pack()

Button6 = Button(middleFrame, text = "Submit")
#button1.grid(row=0, column=1)
Button6.pack()

middleFrame.pack()

bottomFrame = Frame(root)

label2 = Label(bottomFrame, text = "Model Output:")
label2.grid(row = 10)

Button7 = Button(bottomFrame, text = "Exit", command = forButton7)
#button1.grid(row=0, column=1)
Button7.pack()

bottomFrame.pack()

root.geometry("500x500")
root.mainloop()

1 Ответ

0 голосов
/ 07 марта 2019

Здесь я исправил расположение заданных виджетов (а не их функциональность) в соответствии с заданным вопросом. Вы можете пойти по этому пути, чтобы получить желаемый формат:

from tkinter import *
from tkinter import filedialog

def forButton1():
    filename1 = filedialog.askopenfilename()

    with open(filename1) as f:
        for i in f:
            myList.insert(END, i)

    print(filename1)

def forButton2():
    filename1 = filedialog.askopenfilename()

    with open(filename1) as f:
        for i in f:
            myList.insert(END, i)

    print(filename1)

def forButton7():
    root.destroy()

root = Tk()
root.title("Spatialization of DSSAT")

root.grid_columnconfigure(0, weight=1)

topFrame = LabelFrame(root, text="Select input file")
topFrame.grid(row=0, column=0, padx=8, pady=8, sticky=N+E+S+W)
topFrame.grid_rowconfigure(0, weight=1)
topFrame.grid_rowconfigure(1, weight=1)
topFrame.grid_columnconfigure(0, weight=1)
topFrame.grid_columnconfigure(1, weight=1)
topFrame.grid_columnconfigure(2, weight=1)

middleFrame = LabelFrame(root, text="Input data")
middleFrame.grid(row=1, column=0, padx=8, pady=8, sticky=N+E+S+W)
middleFrame.grid_rowconfigure(0, weight=1)
middleFrame.grid_rowconfigure(1, weight=0)
middleFrame.grid_columnconfigure(0, weight=1)
middleFrame.grid_columnconfigure(1, weight=1)

bottomFrame = LabelFrame(root, text="Model Output")
bottomFrame.grid(row=2, column=0, padx=8, pady=8, sticky=N+E+S+W)
bottomFrame.grid_rowconfigure(0, weight=1)
bottomFrame.grid_columnconfigure(0, weight=1)

MyVar1 = IntVar()
MyVar2 = IntVar()

MyCheckbutton1 = Checkbutton(topFrame, text="x", variable=MyVar1)
MyCheckbutton1.grid(row=0, column=0, padx=4, pady=4)
Button1 = Button(topFrame, text="Choose xFile", command=forButton1)
Button1.grid(row=0, column=1, padx=4, pady=4)
Button3 = Button(topFrame, text="Clear")
Button3.grid(row=0, column=2, padx=4, pady=4)

MyCheckbutton2 = Checkbutton(topFrame, text="y", variable=MyVar2)
MyCheckbutton2.grid(row=1, column=0, padx=4, pady=4)
Button2 = Button(topFrame, text="Choose yFile", command=forButton2)
Button2.grid(row=1, column=1, padx=4, pady=4)
Button4 = Button(topFrame, text="Clear")
Button4.grid(row=1, column=2, padx=4, pady=4)

innerMiddleFrame = Frame(middleFrame)
innerMiddleFrame.grid(row=0, column=0, columnspan=2, padx=4, pady=4)
innerMiddleFrame.grid_columnconfigure(0, weight=1)
innerMiddleFrame.grid_columnconfigure(1, weight=0)

scrollbar = Scrollbar(innerMiddleFrame)
myList = Listbox(innerMiddleFrame, yscrollcommand=scrollbar.set)
myList.grid(row=0, column=0, sticky=N+E+S+W)
scrollbar.config(command=myList.yview)
scrollbar.grid(row=0, column=1, sticky=N+E+S+W)

Button5 = Button(middleFrame, text="Reset")
Button5.grid(row=1, column=0, padx=4, pady=4)

Button6 = Button(middleFrame, text="Submit")
Button6.grid(row=1, column=1, padx=4, pady=4)

Button7 = Button(bottomFrame, text="Exit", command=forButton7)
Button7.grid(row=0, column=0, padx=4, pady=4)

root.geometry("250x425")
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...