Обновите окно с помощью OptionMenu в tkinter - PullRequest
0 голосов
/ 09 ноября 2019

Я ищу способ изменить содержимое окна в зависимости от того, какую опцию вы выбрали в OptionMenu. У него должно быть 3 разных варианта, а именно «Введение», «Зашифровать» и «Расшифровать». У меня есть код для создания OptionMenu, но теперь я хочу знать, как я могу изменить их, чтобы показать другую страницу, в зависимости от того, кто выбран. Может ли кто-нибудь помочь мне с этим? Я использую python 3

, например:

from tkinter import *

OptionList = [
"Einführung",
"Verschlüsseln",
"Entschlüsseln"
] 


window = Tk()

window.geometry('200x200')

variable = StringVar(window)
variable.set(OptionList[0])

opt = OptionMenu(window, variable, *OptionList)
opt.config(width=90, font=('Calbri', 12))
opt.pack(side="top")


window.mainloop()

Это приведет к появлению окна с OptionMenu с тремя опциями, которые я написал выше (только на немецком языке), и теперь я хотел быизменить страницу в зависимости от текущей выбранной опции OptionMenu

Спасибо, ребята!

1 Ответ

0 голосов
/ 16 ноября 2019

Получилось как-то работает сейчас. Вы просто должны нажать все дважды. Например, он начинается с Welcome , если вы хотите перейти к Encrypt , снова нажмите Welcome, затем Encrypt. Вы должны делать это каждый раз. Нажмите выбранный вариант еще раз, затем выберите новый.

#coding=utf-

import tkinter as tk
from tkinter import *


window = Tk()

window.geometry('200x200')

OptionList = ["Einführung", "Verschlüsseln", "Entschlüsseln"] 


class App:

    def __init__(self, master):

        self.choice_var = tk.StringVar()
        self.choice_var.set(OptionList[0])

        opt = OptionMenu(window, self.choice_var, *OptionList, command=self.func_call)
        opt.config(width=90, font=('Calbri', 12))
        opt.pack(side="top")

        self.random_label1 = tk.Label(window, text="Welcome content here")
        self.random_label1.pack()
        self.random_label2 = tk.Label(window, text="Encrypt content here")
        self.random_label2.pack()
        self.random_label3 = tk.Label(window, text="Decrypt content here")
        self.random_label3.pack()
        self.label_info1 = self.random_label1.place_info()
        self.label_info2 = self.random_label2.place_info()
        self.label_info3 = self.random_label3.place_info()
        self.random_label1.visible = True
        self.random_label2.visible = True
        self.random_label3.visible = True
        self.func_call()
        self.EF()
        self.VS()
        self.ES()

    def EF(self):
        var = str(self.choice_var.get())
        if self.random_label1.visible:
            self.random_label1.pack_forget()

        else:
            self.random_label1.pack(self.label_info1)
        self.random_label1.visible = not self.random_label1.visible

    def VS(self):
        var = str(self.choice_var.get())
        if self.random_label2.visible:
            self.random_label2.pack_forget()

        else:
            self.random_label2.pack(self.label_info2)
        self.random_label2.visible = not self.random_label2.visible

    def ES(self):
        var = str(self.choice_var.get())
        if self.random_label3.visible:
            self.random_label3.pack_forget()

        else:
            self.random_label3.pack(self.label_info3)
        self.random_label3.visible = not self.random_label3.visible

    def func_call(self, *args):
        var = str(self.choice_var.get())
        if var == "Einführung":
            print(var)
            self.EF()
        elif var == "Verschlüsseln":
            print(var)
            self.VS()
        elif var == "Entschlüsseln":
            print(var)
            self.ES()


myApp = App(window)
window.mainloop()

...