Форум сайта python.su
Добрый день.
Хочу сделать переключение закладками в окнах (примерно как в книге excel).
Вот тут есть описание виджета notebook из ttk.
http://docs.python.org/2/library/ttk.html#ttk-notebook
Но в рунете нет ни одного примера использования. Помогите пожалуйста.
Офлайн
Примеров масса
ttk.notebook example
Офлайн
Да спасибо, вроде есть. Но появилась новая проблема с импортом.
from tkinter import * from tkinter import ttk import tkinter import tkinter.ttk import tkinter as tk import tkinter.ttk as ttk
Офлайн
Что Вы делаете?
Зачем Вы импортируете уже импортированные модули?
Я же Вам написал, что скорее всего, ttk не является частью tkinter, посему его импортировать нужно отдельно.
Приведите больше кода. Ничего же не понятно.
Офлайн
Вот пример работы со вкладками. Только Вам нужно поменять Tkinter на tkinter…
http://www.python.su/forum/topic/20690/
Отредактировано 4kpt (Фев. 20, 2013 13:26:31)
Офлайн
Вот пример
import tkinter as tk import tkinter.ttk as ttk root = tk.Tk() # use width x height + x_offset + y_offset (no spaces!) root.geometry("%dx%d+%d+%d" % (300, 200, 100, 50)) root.title('test the ttk.Notebook') nb = ttk.Notebook(root) nb.pack(fill='both', expand='yes') # create a child frame for each page f1 = tk.Frame(bg='red') f2 = tk.Frame(bg='blue') f3 = tk.Frame(bg='green') # create the pages nb.add(f1, text='page1') nb.add(f2, text='page2') nb.add(f3, text='page3') # put a button widget on child frame f1 on page1 btn1 = tk.Button(f1, text='button1') btn1.pack(side='left', anchor='nw', padx=3, pady=5) root.mainloop()
# -*- coding: utf-8 -*- from tkinter import * import tkinter.ttk mainframe = tkinter.Tk() # use width x height + x_offset + y_offset (no spaces!) mainframe.minsize(800,500) mainframe_x = 800 mainframe_y = 500 mainframe_width = (mainframe.winfo_screenwidth() / 2 - mainframe_x / 2) mainframe_heigth = (mainframe.winfo_screenheight() / 2 - mainframe_y / 2) mainframe.geometry("%dx%d+%d+%d" % (mainframe_x, mainframe_y, mainframe_width, mainframe_heigth)) mainframe.title('test') mainframe_menu = Menu(mainframe) mainframe.geometry(Menu = mainframe_menu) n_book = ttk.Notebook(mainframe) n_book.pack(fill='both', expand='yes') # create a child frame for each page frame_1 = tk.Frame(bg='red') frame_2 = tk.Frame(bg='blue') frame_3 = tk.Frame(bg='green') # create the pages n_book.add(frame_1, text='page1') n_book.add(frame_2, text='page2') n_book.add(frame_3, text='page3') # put a button widget on child frame f1 on page1 btn1 = tk.Button(frame_1, text='button1') btn1.pack(side='left', anchor='nw', padx=3, pady=5) mainframe.mainloop()
Офлайн
Вообще отстой получается.
А может можно сразу все импортировать? Чтоб без всяких вылетов: не найден tk или tkinter и т.д.
Вот так вроде работает. Но но пришлось убрать фон. Оно теперь и bg не знает что такое.
# -*- coding: utf-8 -*- from tkinter import* from tkinter.ttk import* mainframe = Tk() # use width x height + x_offset + y_offset (no spaces!) mainframe.minsize(800,500) mainframe_x = 800 mainframe_y = 500 mainframe_width = (mainframe.winfo_screenwidth() / 2 - mainframe_x / 2) mainframe_heigth = (mainframe.winfo_screenheight() / 2 - mainframe_y / 2) mainframe.geometry("%dx%d+%d+%d" % (mainframe_x, mainframe_y, mainframe_width, mainframe_heigth)) mainframe.title('test') mainframe_menu = Menu(mainframe) mainframe.config(menu = mainframe_menu) n_book = Notebook(mainframe) n_book.pack(fill='both', expand='yes') # create a child frame for each page frame_1 = Frame() frame_2 = Frame() frame_3 = Frame() # create the pages n_book.add(frame_1, text='page1') n_book.add(frame_2, text='page2') n_book.add(frame_3, text='page3') # put a button widget on child frame f1 on page1 btn1 = Button(frame_1, text='button1') btn1.pack(side='left', anchor='nw', padx=3, pady=5) mainframe.mainloop()
Офлайн
Ubhra
Какой питон?
Офлайн
3.3 + pyscripter 2.5.3
Офлайн
Гарантий не даю, но скорее всего этот код будет работать…
Просто я не пишу под 3.Х :)
# -*- coding: utf-8 -*- import tkinter import ttk mainframe = tkinter.Tk() # use width x height + x_offset + y_offset (no spaces!) mainframe_width = (mainframe.winfo_screenwidth() / 2 - 200) mainframe_heigth = (mainframe.winfo_screenheight() / 2 - 250) mainframe.geometry("%dx%d+%d+%d" % (800, 600, mainframe_width, mainframe_heigth)) mainframe.title('test') n_book = ttk.Notebook(mainframe) n_book.pack(fill='both', expand='yes') # create a child frame for each page style = ttk.Style() style.configure("1.TFrame", background="red") style.configure("2.TFrame", background="blue") style.configure("3.TFrame", background="green") frame_1 = ttk.Frame(mainframe, style="1.TFrame") frame_2 = ttk.Frame(mainframe, style="2.TFrame") frame_3 = ttk.Frame(mainframe, style="3.TFrame") frame_1.pack() frame_2.pack() frame_3.pack() # create the pages n_book.add(frame_1, text='page1') n_book.add(frame_2, text='page2') n_book.add(frame_3, text='page3') # put a button widget on child frame f1 on page1 btn1 = ttk.Button(frame_1, text='button1') btn1.pack(side='left', anchor='nw', padx=3, pady=5) mainframe.mainloop()
Отредактировано 4kpt (Фев. 20, 2013 14:25:25)
Офлайн