Найти - Пользователи
Полная версия: ttk notebook
Начало » GUI » ttk notebook
1 2
Ubhra
Добрый день.
Хочу сделать переключение закладками в окнах (примерно как в книге excel).
Вот тут есть описание виджета notebook из ttk.
http://docs.python.org/2/library/ttk.html#ttk-notebook
Но в рунете нет ни одного примера использования. Помогите пожалуйста.
FishHook
Примеров масса

ttk.notebook example
Ubhra
Да спасибо, вроде есть. Но появилась новая проблема с импортом.
from tkinter import *
from tkinter import ttk
import tkinter
import tkinter.ttk
import tkinter as tk
import tkinter.ttk as ttk
Пишу одно, ошибка, меняю импорт, все ок.
Пишу дальше, снова ошибка, меняю импорт, ошибки нет, старая возвращается.
По началу это было весело, но дальше, все больше вымораживает.
4kpt
Что Вы делаете?
Зачем Вы импортируете уже импортированные модули?
Я же Вам написал, что скорее всего, ttk не является частью tkinter, посему его импортировать нужно отдельно.
Приведите больше кода. Ничего же не понятно.
4kpt
Вот пример работы со вкладками. Только Вам нужно поменять Tkinter на tkinter…
http://www.python.su/forum/topic/20690/
Ubhra
Вот пример
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()
Ubhra
Вообще отстой получается.
А может можно сразу все импортировать? Чтоб без всяких вылетов: не найден 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()
4kpt
Ubhra
Какой питон?
Ubhra
3.3 + pyscripter 2.5.3
4kpt
Гарантий не даю, но скорее всего этот код будет работать…
Просто я не пишу под 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()
Ну что, работает?
Код исправил… Не хватало двух начений.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB