2015-08-29 3 views
3

Я пытаюсь создать собственную Framework, и для этого хочу сделать графический интерфейс, используя tkinter на компьютере Apple.tkinter notebook.tab: текст (заголовок) отображается неправильно

Кажется, что text (название) из notebook.tabs не отображается должным образом на Mac OS X, как показано ниже:

enter image description here

Как вы можете видеть text не центрированную по горизонтали и немного смещена наверху.

Мой код выглядит следующим образом:

#!/usr/bin/env python3 
# coding: utf-8 

import tkinter as tk 
from tkinter import ttk 


class SpiderGUI(): 
    def __init__(self, master): 
     self.master = master 
     self.frame = ttk.Frame(self.master, padding=(10, 10, 10, 10)) 
     self.frame.pack(fill="both", expand="True") 

     self.paned_window = ttk.Panedwindow(self.frame, orient="horizontal") 
     self.paned_window.pack(fill="both", expand="True") 

     self.frame_settings = ttk.Frame(self.paned_window, width=75, height=300, relief="sunken") 
     self.paned_window.add(self.frame_settings) 
     self.frame_output = ttk.Frame(self.paned_window, width=950, height=300, relief="sunken") 
     self.paned_window.add(self.frame_output, weight="4") 
     self.frame_logging = ttk.Frame(self.paned_window, width=175, height=500, relief="sunken") 
     self.paned_window.add(self.frame_logging) 


     self.console_notebook = ttk.Notebook(self.frame_output) 
     self.console_notebook.pack() 

     self.frame_tab_console = ttk.Frame(self.console_notebook) 
     self.console_notebook.add(self.frame_tab_console, text="Console", padding=(10)) 

     self.frame_tab_database = ttk.Frame(self.console_notebook) 
     self.console_notebook.add(self.frame_tab_database, text="MongoDB") 

def main(): 
    root = tk.Tk() 
    app = SpiderGUI(root) 
    # root.geometry(newGeometry="1200x800+100+100") 
    root.title('name') 
    root.resizable(width=True, height=False) 
    # root.maxsize(width=1280, height=1024) 
    # root.minsize(width=640, height=480) 

    root.mainloop() 


if __name__ == '__main__': 
    main() 
+0

Просьба представить правильный эскиз, изображающий то, что вы хотите получить в качестве результат. Вы хотите, чтобы эти вкладки для ноутбуков находились в середине вашего трехколоночного дизайна? – albert

+0

ТЕКСТ внутри вкладок не центрирован. Сама ТАБС в порядке. У меня есть они в данный момент с style.configure («TNotebook», tabposition = 'nw'). Но TEXT: Консоль и MongoDB находятся не в середине вкладки. – FrEaKi

+1

Хорошо. Я не видел этого в первый раз. Однако, похоже, это ошибка в tkinter (Pyhon 3.4.3, Mac OS 10.10.5), так как это похоже на старый проект, над которым я работал. В то же время могут появиться некоторые исправления в новых выпусках tkinter, предоставляемых [ActiveState] (http://www.activestate.com/activetcl/downloads), как рекомендовано [Python.org] (https://www.python.org/загрузить/макинтош/tcltk /). Однако, честно говоря, я не знаю, как это решить. – albert

ответ

3

Если кто-то еще нужно решение этой проблемы. Это Hacky, но работает:

s = ttk.Style() 
s.configure('TNotebook.Tab', padding=(20, 8, 20, 0)) 
0

Это будет лучше применить фиксацию ответил на mrushabh только для OSX, как это:

root = tk.Tk() 

# a fix for running on OSX - to center the title text vertically 
if root.tk.call('tk', 'windowingsystem') == 'aqua': # only for OSX 
    s = ttk.Style() 
    # Note: the name is specially for the text in the widgets 
    s.configure('TNotebook.Tab', padding=(12, 8, 12, 0)) 
Смежные вопросы