문제

Tkinter와 Wxpython과 함께 조금만 연주 한 후, 나는 소스 코드가 얼마나 깨끗해 보이는지 측면에서 Tkinter를 훨씬 더 좋아합니다. 그러나 그것은 많은 기능을 가지고 있지 않은 것 같습니다. 특히 탭이 없습니다 (Firefox 창의 상단에있는 탭).

주제에 대한 약간의 인터넷 검색은 몇 가지 제안을 제공합니다. 거기 있습니다 요리 책 항목 클래스를 사용하면 탭을 사용할 수 있지만 매우 원시적입니다. 또한 있습니다 Python Megawidgets Sourceforge에서는 이것이 매우 오래된 것처럼 보이고 설치 중에 오류를주었습니다.

누구든지 Tkinter에서 탭 GUI를 만든 경험이 있습니까? 무엇을 사용 했습니까? 아니면 더 강력한 윈도우 구성 요소가 필요한 사람이 Wxpython을 사용해야하는 경우가 있습니까?

도움이 되었습니까?

해결책

최근 Python (> 2.7) 버전에서 ttk 액세스를 제공하는 모듈 TK 테마 위젯 소개 된 세트 Tk 8.5.

가져 오는 방법은 다음과 같습니다 ttk Python 2에서 :

import ttk

help(ttk.Notebook)

Python 3에서 ttk 모듈은 표준 분포와 함께 다음의 하위 모듈로 제공됩니다. tkinter.

다음은 TkDocs 웹 사이트 :

from tkinter import ttk
import tkinter as tk
from tkinter.scrolledtext import ScrolledText


def demo():
    root = tk.Tk()
    root.title("ttk.Notebook")

    nb = ttk.Notebook(root)

    # adding Frames as pages for the ttk.Notebook 
    # first page, which would get widgets gridded into it
    page1 = ttk.Frame(nb)

    # second page
    page2 = ttk.Frame(nb)
    text = ScrolledText(page2)
    text.pack(expand=1, fill="both")

    nb.add(page1, text='One')
    nb.add(page2, text='Two')

    nb.pack(expand=1, fill="both")

    root.mainloop()

if __name__ == "__main__":
    demo()

또 다른 대안은 NoteBook 에서 위젯 tkinter.tix 도서관. 사용 tkinter.tix, 당신은 있어야합니다 Tix 설치된 위젯, 일반적으로 설치와 함께 Tk 위젯. 설치를 테스트하려면 다음을 시도하십시오.

from tkinter import tix
root = tix.Tk()
root.tk.eval('package require Tix')

자세한 내용은 이것을 확인하십시오 웹 페이지 PSF 웹 사이트에서.

주목하십시오 tix 꽤 오래되고 잘지지되지 않았으므로 최선의 선택은 ttk.Notebook.

다른 팁

아직도보고 있다면 Tkinter의 탭 으로이 작업을 수행했습니다. 코드를 사용하여 원하는 방식으로 기능하게 만들기 위해 코드를 재생하십시오 (예 : 버튼을 추가하여 새 탭을 추가 할 수 있음).

from tkinter import *

class Tabs(Frame):

    """Tabs for testgen output"""

    def __init__(self, parent):
        super(Tabs, self).__init__()
        self.parent = parent
        self.columnconfigure(10, weight=1)
        self.rowconfigure(3, weight=1)
        self.curtab = None
        self.tabs = {}
        self.addTab()                
        self.pack(fill=BOTH, expand=1, padx=5, pady=5)

    def addTab(self):
        tabslen = len(self.tabs)
        if tabslen < 10:
            tab = {}
            btn = Button(self, text="Tab "+str(tabslen), command=lambda: self.raiseTab(tabslen))
            btn.grid(row=0, column=tabslen, sticky=W+E)

            textbox = Text(self.parent)
            textbox.grid(row=1, column=0, columnspan=10, rowspan=2, sticky=W+E+N+S, in_=self)

            # Y axis scroll bar
            scrollby = Scrollbar(self, command=textbox.yview)
            scrollby.grid(row=7, column=5, rowspan=2, columnspan=1, sticky=N+S+E)
            textbox['yscrollcommand'] = scrollby.set

            tab['id']=tabslen
            tab['btn']=btn
            tab['txtbx']=textbox
            self.tabs[tabslen] = tab
            self.raiseTab(tabslen)

    def raiseTab(self, tabid):
        print(tabid)
        print("curtab"+str(self.curtab))
        if self.curtab!= None and self.curtab != tabid and len(self.tabs)>1:
                self.tabs[tabid]['txtbx'].lift(self)
                self.tabs[self.curtab]['txtbx'].lower(self)
        self.curtab = tabid


def main():
    root = Tk()
    root.geometry("600x450+300+300")
    t = Tabs(root)
    t.addTab()
    root.mainloop()

if __name__ == '__main__':
    main()

지금은 도움이되지 않을 수도 있지만 TK 8.5에는 확장 된 위젯 세트가 제공됩니다. 이 확장 세트는 "타일"으로 알려진 확장을 통해 TK 8.4와 함께 사용할 수 있습니다. 확장 된 위젯 세트에는 노트북 위젯이 포함되어 있습니다. 불행히도, 현재 Tkinter는 기본적으로 기본적으로 이러한 위젯과 함께 제공되지 않는 상당히 오래된 버전의 TK를 사용합니다.

Tkinter에게 타일을 이용할 수 있도록 노력했습니다. 체크 아웃 http://tkinter.unpythonic.net/wiki/tilewrapper. 또 다른 비슷한 노력은 참조하십시오 http://pypi.python.org/pypi/pyttk. 또한,이 위젯이 어떻게 보이는지 (루비, Perl 및 Tcl에서) http://www.tkdocs.com/.

TK 8.5는 a입니다 거대한 주식 tk에 대한 개선. 몇 가지 새로운 위젯, 기본 위젯 및 테마 엔진을 소개합니다. 곧 Tkinter에서 기본적으로 언젠가 사용할 수 있기를 바랍니다. 파이썬 세계가 다른 언어보다 뒤떨어지는 것이 너무 나쁩니다.

업데이트 : 최신 버전의 Python에는 이제 테마 위젯에 대한 지원이 포함되어 있습니다. _

"아니면 더 강력한 윈도우 구성 요소가 필요한 사람이라면 Wxpython을 사용해야하는 경우가 있습니까?"
짧은 대답 : 예.

긴 대답 : Wxpython 코드가 "깨끗한"느낌을 느끼려면 약간의 연습이 필요할 수 있지만 Tkinter보다 더 좋고 훨씬 강력합니다. 요즘 더 많은 사람들이 그것을 사용하기 때문에 더 나은 지원을받을 것입니다.

PMW에 어떤 문제가 있었습니까? 예, 그렇습니다. 그러나 순수한 파이썬이므로 작동해야합니다.

TIX는 PY2EXE에서 작동하지 않습니다. 그렇다면 문제가됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top