Ткинтер - открытие нескольких окон - PullRequest
1 голос
/ 16 марта 2019

Как видно из названия, у меня проблема с открытием нескольких окон.Новое окно (то же самое окно) каждый раз, когда я нажимаю кнопку.Я не смог найти ответ на этот конкретный сценарий.Я даже пытался отключить кнопку после открытия окна (что привело к проблеме повторного включения).

Ниже достаточно кода для работы, вы можете увидеть проблему, нажав кнопку несколько раз.Я надеюсь на несколько простое решение, так как я довольно новичок в Tkinter.Кроме того, меньшее окно необходимо изменить (развернуть) вместе с основным окном, поэтому я не думаю, что окно Toplevel будет работать.

Возможно, у других есть такая же проблема, и заранее спасибо!

Примечание: я использую Python 2.7 (Tkinter)

#!/usr/bin/python

import os
import sys

import Tkinter as tk
from Tkinter import *
from ScrolledText import *
import tkFileDialog
import tkMessageBox

# Main
root = tk.Tk(className = "tex")
root.geometry("500x300")
root.title("tex")
tex = ScrolledText(root, padx=2, pady=2, undo=True, font=('Arial 11'))

def note_area():
    btn_frame = Frame()
    note = LabelFrame(tex, bd=1, relief='ridge')

    tx = Text(note, width=18, relief='flat', padx=2, pady=2)
    tx.insert('1.0', "Notes..")
    tx.pack(side='top', fill=BOTH, expand=True)

    note.pack(side='right', fill=Y)
    btn_frame.pack(side='bottom', fill=Y)

# ToolBar Button  (should only open one instance of note_area)
toolbar = Frame(root, bd=2, relief='groove')
b4 = Button(toolbar, text="Notes", width=4, command=note_area)
b4.pack(side=RIGHT, padx=4, pady=2)
toolbar.pack(side=TOP, fill=X)

tex.pack(fill="both", expand=True)
root.mainloop()  

1 Ответ

1 голос
/ 16 марта 2019

Вам просто нужно создать переменную, чтобы отслеживать, открыто ли у вас окно заметки или нет.

tex.notes_open = False
def note_area():
    if tex.notes_open: 
        return # abort the function, notes already open
    else:
        tex.notes_open = True # set the flag for the next time
        # rest of your code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...