#python #tkinter
Вопрос:
Я новичок в программировании, и у меня возникли проблемы с поиском учебника, в котором рассказывается, как создать графический интерфейс, использующий несколько окон. Например, если пользователь нажимает кнопку «поиск», появляется окно с результатами поиска. Как мне этого добиться? Возможно ли это в рамках Tkinter? Любые предложения/ ссылки на источники будут высоко оценены. Спасибо.
Комментарии:
1. Уточнение-я пока не занимаюсь получением информации/ заполнением окна… Мне нужно только знать, как заставить дополнительное окно появляться по команде/ иметь возможность размещать виджеты в указанном окне.
2. Вместо того, чтобы уточнять в разделе комментариев, вы можете просто отредактировать свой вопрос.
Ответ №1:
Чтобы создать свое первое окно, вы создаете экземпляр Tk
класса. Все остальные окна являются экземплярами Toplevel
.
import Tkinter as tk
class Example(tk.Frame):
def __init__(self, root):
tk.Frame.__init__(self, root)
b1 = tk.Button(self, text="Add another window", command = self.newWindow)
b1.pack(side="top", padx=40, pady=40)
self.count = 0
def newWindow(self):
self.count = 1
window = tk.Toplevel(self)
label = tk.Label(window, text="This is window #%s" % self.count)
label.pack(side="top", fill="both", expand=True, padx=40, pady=40);
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(side="top", fill="both", expand=True)
root.mainloop()
Ответ №2:
import tkinter as tk
from tkinter import *
class Example(tk.Frame):
def __init__(self, root):
tk.Frame.__init__(self, root)
# b1 = tk.Button(self, text="Add another window", command = self.newWindow)
self.count = 0
self.canvas1 = Canvas(self, width=500, height=500)
b1 = tk.Button(self.canvas1, text="Add another window", command = self.create_new_window)
# b1.pack(side="top", padx=40, pady=40)
self.canvas1.pack(side="top")
b1.pack(side="top", padx=250, pady=240)
def create_new_window(self):
self.window1 = tk.Toplevel(self)
self.window1.geometry(" 160 300")
self.canvas1 = Canvas(self.window1, width=50, height=500)
# label = tk.Label(self.window1, text="This is window #%s" % self.count)
self.canvas1.pack(side="top", fill="both")
def create_new_window2(self):
self.window2 = tk.Toplevel(self)
self.canvas2 = Canvas(self.window2, width=500, height=500)
# label = tk.Label(self.window2, text="This is window #%s" % self.count)
self.canvas2.pack(side="top", fill="both", expand=True, padx=40, pady=40)
if __name__ == "__main__":
root = tk.Tk()
root.geometry(" 300 300")
Example(root).pack(side="top", fill="both", expand=True)
root.mainloop()