-
Python/Graphical User Interfaces with Tk코딩/Python 2024. 7. 29. 09:54728x90
Graphical User Interfaces with Tk
이 문서는 Graphical User Interfaces with Tk를 번역한 것이다.
이 번역본은 완전한 번역이 아니며, 영문을 읽는데 소요되는 시간을 절약하기 위해 작성되었다.
번역본의 어색한 해석을 이해할 수 있도록 영문도 함께 배열한다.
마크다운 문서를 html로 자동변환하면서 몇몇 기호는 누락될 수 있다. 어색한 기호표현이 나타난다면 원본을 참고해야 한다.
영문은 회색으로 표시하는데, 티스토리 블로그 시스템의 문제로 리스트는 회색으로 처리되지 않는다.
Tk/Tcl has long been an integral part of Python. It provides a robust and platform independent windowing toolkit, that is available to Python programmers using the tkinter package, and its extension, the tkinter.tix and the tkinter.ttk modules.
The tkinter package is a thin object-oriented layer on top of Tcl/Tk. To use tkinter, you don’t need to write Tcl code, but you will need to consult the Tk documentation, and occasionally the Tcl documentation. tkinter is a set of wrappers that implement the Tk widgets as Python classes.
tkinter’s chief virtues are that it is fast, and that it usually comes bundled with Python. Although its standard documentation is weak, good material is available, which includes: references, tutorials, a book and others. tkinter is also famous for having an outdated look and feel, which has been vastly improved in Tk 8.5. Nevertheless, there are many other GUI libraries that you could be interested in. The Python wiki lists several alternative GUI frameworks and tools.
Tk/Tcl은 오랫동안 Python의 필수적인 부분이었다. tkinter 패키지와 확장 모듈인 tkinter.tix 및 tkinter.ttk 모듈을 사용하는 Python 프로그래머에게 제공되는 강력하고 플랫폼에 독립적인 윈도잉 툴킷을 제공한다.
tkinter 패키지는 Tcl/Tk 위에 있는 얇은 객체 지향층이다. tkinter를 사용하려면 Tcl 코드를 작성할 필요가 없지만 Tk 설명서와 가끔 Tcl 설명서를 참조해야 한다. tkinter는 Tk 위젯을 Python 클래스로 구현하는 래퍼 세트이다.
tkinter의 주요 장점은 빠르고 일반적으로 Python과 함께 제공된다는 것이다. 표준 설명서는 약하지만 참조, 튜토리얼, 책 및 기타를 포함한 좋은 자료를 사용할 수 있다. tkinter는 오래된 모양과 느낌으로 유명하지만 Tk 8.5에서 크게 개선되었다. 그럼에도 불구하고 관심을 가질 만한 다른 많은 GUI 라이브러리가 있다. Python 위키는 여러 대체 GUI 프레임워크와 도구를 나열한다.
tkinter — Python interface to Tcl/Tk
The tkinter package (“Tk interface”) is the standard Python interface to the Tcl/Tk GUI toolkit. Both Tk and tkinter are available on most Unix platforms, including macOS, as well as on Windows systems.
Running python -m tkinter from the command line should open a window demonstrating a simple Tk interface, letting you know that tkinter is properly installed on your system, and also showing what version of Tcl/Tk is installed, so you can read the Tcl/Tk documentation specific to that version.
Tkinter supports a range of Tcl/Tk versions, built either with or without thread support. The official Python binary release bundles Tcl/Tk 8.6 threaded. See the source code for the _tkinter module for more information about supported versions.
Tkinter is not a thin wrapper, but adds a fair amount of its own logic to make the experience more pythonic. This documentation will concentrate on these additions and changes, and refer to the official Tcl/Tk documentation for details that are unchanged.
tkinter 패키지("Tk 인터페이스")는 Tcl/Tk GUI 툴킷에 대한 표준 Python 인터페이스이다. Tk와 tkinter는 모두 macOS를 포함한 대부분의 Unix 플랫폼과 Windows 시스템에서 사용할 수 있다.
명령줄에서 python -m tkinter를 실행하면 간단한 Tk 인터페이스를 보여주는 창이 열리고, tkinter가 시스템에 제대로 설치되었는지 알려주며, 설치된 Tcl/Tk 버전도 표시되므로 해당 버전에 대한 Tcl/Tk 문서를 읽을 수 있다.
Tkinter는 스레드 지원 여부에 관계없이 다양한 Tcl/Tk 버전을 지원한다. 공식 Python 바이너리 릴리스는 Tcl/Tk 8.6 스레드를 번들로 제공한다. 지원되는 버전에 대한 자세한 내용은 _tkinter 모듈의 소스 코드를 참조하라.
Tkinter는 얇은 래퍼가 아니지만, 경험을 더 파이썬답게 만들기 위해 상당한 양의 자체 로직을 추가한다. 이 문서는 이러한 추가 사항과 변경 사항에 집중하고, 변경되지 않은 세부 정보는 공식 Tcl/Tk 문서를 참조하라.
Note
Tcl/Tk 8.5 (2007) introduced a modern set of themed user interface components along with a new API to use them. Both old and new APIs are still available. Most documentation you will find online still uses the old API and can be woefully outdated.
Tcl/Tk 8.5(2007)는 이를 사용하기 위한 새로운 API와 함께 최신 테마 사용자 인터페이스 구성 요소 세트를 도입했다. 이전 및 새 API를 모두 사용할 수 있다. 온라인에서 찾을 수 있는 대부분의 문서는 여전히 이전 API를 사용하고 있으며, 매우 오래되었을 수 있다.
See also
Extensive tutorial on creating user interfaces with Tkinter. Explains key concepts, and illustrates recommended approaches using the modern API.
Tkinter 8.5 reference: a GUI for Python
Reference documentation for Tkinter 8.5 detailing available classes, methods, and options.
Tcl/Tk Resources:
Comprehensive reference to each of the underlying Tcl/Tk commands used by Tkinter.
Additional documentation, and links to Tcl/Tk core development.
Books:
Modern Tkinter for Busy Python Developers
By Mark Roseman. (ISBN 978-1999149567)
Python GUI programming with Tkinter
By Alan D. Moore. (ISBN 978-1788835886)
By Mark Lutz; has excellent coverage of Tkinter. (ISBN 978-0596158101)
Tcl and the Tk Toolkit (2nd edition)
By John Ousterhout, inventor of Tcl/Tk, and Ken Jones; does not cover Tkinter. (ISBN 978-0321336330)
Architecture
Tcl/Tk is not a single library but rather consists of a few distinct modules, each with separate functionality and its own official documentation. Python’s binary releases also ship an add-on module together with it.
Tcl/Tk는 단일 라이브러리가 아니라 몇 가지 개별 모듈로 구성되어 있으며, 각각 별도의 기능과 자체 공식 문서가 있다. Python의 바이너리 릴리스도 애드온 모듈을 함께 제공한다.
Tcl
Tcl is a dynamic interpreted programming language, just like Python. Though it can be used on its own as a general-purpose programming language, it is most commonly embedded into C applications as a scripting engine or an interface to the Tk toolkit. The Tcl library has a C interface to create and manage one or more instances of a Tcl interpreter, run Tcl commands and scripts in those instances, and add custom commands implemented in either Tcl or C. Each interpreter has an event queue, and there are facilities to send events to it and process them. Unlike Python, Tcl’s execution model is designed around cooperative multitasking, and Tkinter bridges this difference (see Threading model for details).
Tcl은 Python과 마찬가지로 동적 인터프리팅 프로그래밍 언어이다. 일반 목적 프로그래밍 언어로 단독으로 사용할 수 있지만, 스크립팅 엔진이나 Tk 툴킷 인터페이스로 C 애플리케이션에 가장 일반적으로 내장된다. Tcl 라이브러리는 하나 이상의 Tcl 인터프리터 인스턴스를 생성하고 관리하고, 해당 인스턴스에서 Tcl 명령과 스크립트를 실행하고, Tcl 또는 C로 구현된 사용자 정의 명령을 추가하는 C 인터페이스를 가지고 있다. 각 인터프리터에는 이벤트 큐가 있으며, 이벤트를 인터프리터로 보내고 처리하는 기능이 있다. Python과 달리 Tcl의 실행 모델은 협력적 멀티태스킹을 중심으로 설계되었으며, Tkinter는 이 차이점을 메운다(자세한 내용은 스레딩 모델 참조).
Tk
Tk is a Tcl package implemented in C that adds custom commands to create and manipulate GUI widgets. Each Tk object embeds its own Tcl interpreter instance with Tk loaded into it. Tk’s widgets are very customizable, though at the cost of a dated appearance. Tk uses Tcl’s event queue to generate and process GUI events.
Tk는 GUI 위젯을 생성하고 조작하는 사용자 정의 명령을 추가하는 C로 구현된 Tcl 패키지이다. 각 Tk 객체는 Tk가 로드된 자체 Tcl 인터프리터 인스턴스를 포함한다. Tk의 위젯은 매우 사용자 정의가 가능하지만, 오래된 모양이라는 단점이 있다. Tk는 Tcl의 이벤트 큐를 사용하여 GUI 이벤트를 생성하고 처리한다.
Ttk
Themed Tk (Ttk) is a newer family of Tk widgets that provide a much better appearance on different platforms than many of the classic Tk widgets. Ttk is distributed as part of Tk, starting with Tk version 8.5. Python bindings are provided in a separate module, tkinter.ttk.
테마 Tk(Ttk)는 많은 기존 Tk 위젯보다 다양한 플랫폼에서 훨씬 더 나은 모양을 제공하는 새로운 Tk 위젯 제품군이다. Ttk는 Tk 버전 8.5부터 Tk의 일부로 배포된다. Python 바인딩은 별도의 모듈인 tkinter.ttk에서 제공된다.
Internally, Tk and Ttk use facilities of the underlying operating system, i.e., Xlib on Unix/X11, Cocoa on macOS, GDI on Windows.
When your Python application uses a class in Tkinter, e.g., to create a widget, the tkinter module first assembles a Tcl/Tk command string. It passes that Tcl command string to an internal _tkinter binary module, which then calls the Tcl interpreter to evaluate it. The Tcl interpreter will then call into the Tk and/or Ttk packages, which will in turn make calls to Xlib, Cocoa, or GDI.
내부적으로 Tk와 Ttk는 기본 운영 체제의 기능을 사용한다. 즉, Unix/X11의 Xlib, macOS의 Cocoa, Windows의 GDI이다.
Python 애플리케이션이 Tkinter의 클래스를 사용하여 위젯을 만드는 경우, tkinter 모듈은 먼저 Tcl/Tk 명령 문자열을 어셈블한다. 이 Tcl 명령 문자열을 내부 _tkinter 바이너리 모듈에 전달한 다음 Tcl 인터프리터를 호출하여 평가한다. 그런 다음 Tcl 인터프리터는 Tk 및/또는 Ttk 패키지를 호출하고, 이 패키지는 차례로 Xlib, Cocoa 또는 GDI를 호출한다.
Tkinter Modules
Support for Tkinter is spread across several modules. Most applications will need the main tkinter module, as well as the tkinter.ttk module, which provides the modern themed widget set and API:
Tkinter에 대한 지원은 여러 모듈에 걸쳐 분산된다. 대부분의 애플리케이션에는 기본 tkinter 모듈과 최신 테마 위젯 세트와 API를 제공하는 tkinter.ttk 모듈이 필요하다.
from tkinter import * from tkinter import ttk
class tkinter.Tk(screenName=None, baseName=None, className='Tk', useTk=True, sync=False, use=None)
Construct a toplevel Tk widget, which is usually the main window of an application, and initialize a Tcl interpreter for this widget. Each instance has its own associated Tcl interpreter.
The Tk class is typically instantiated using all default values. However, the following keyword arguments are currently recognized:
일반적으로 애플리케이션의 주 창인 최상위 Tk 위젯을 구성하고 이 위젯에 대한 Tcl 인터프리터를 초기화한다. 각 인스턴스에는 고유한 연결된 Tcl 인터프리터가 있다.
Tk 클래스는 일반적으로 모든 기본값을 사용하여 인스턴스화된다. 그러나 현재 다음 키워드 인수가 인식된다.
screenName
When given (as a string), sets the DISPLAY environment variable. (X11 only)
(문자열로) 지정되면 DISPLAY 환경 변수를 설정한다. (X11만 해당)
baseName
Name of the profile file. By default, baseName is derived from the program name (sys.argv[0]).
프로필 파일의 이름이다. 기본적으로 baseName은 프로그램 이름(sys.argv[0])에서 파생된다.
className
Name of the widget class. Used as a profile file and also as the name with which Tcl is invoked (argv0 in interp).
위젯 클래스의 이름이다. 프로필 파일로 사용되고 Tcl이 호출되는 이름으로도 사용된다(interp의 argv0).
useTk
If True, initialize the Tk subsystem. The tkinter.Tcl() function sets this to False.
True이면 Tk 하위 시스템을 초기화한다. tkinter.Tcl() 함수는 이를 False로 설정한다.
sync
If True, execute all X server commands synchronously, so that errors are reported immediately. Can be used for debugging. (X11 only)
True이면 모든 X 서버 명령을 동기적으로 실행하여 오류가 즉시 보고되도록 한다. 디버깅에 사용할 수 있다(X11 전용)
use
Specifies the id of the window in which to embed the application, instead of it being created as an independent toplevel window. id must be specified in the same way as the value for the -use option for toplevel widgets (that is, it has a form like that returned by winfo_id()).
Note that on some platforms this will only work correctly if id refers to a Tk frame or toplevel that has its -container option enabled.
독립적인 최상위 창으로 생성되는 대신 애플리케이션을 포함할 창의 ID를 지정한다. ID는 최상위 위젯의 -use 옵션 값과 같은 방식으로 지정해야 한다(즉, winfo_id()에서 반환된 것과 같은 형식이어야 함).
일부 플랫폼에서는 id가 -container 옵션이 활성화된 Tk 프레임이나 최상위를 참조하는 경우에만 올바르게 작동한다.
Tk reads and interprets profile files, named .className.tcl and .baseName.tcl, into the Tcl interpreter and calls exec() on the contents of .className.py and .baseName.py. The path for the profile files is the HOME environment variable or, if that isn’t defined, then os.curdir.
Tk는 .className.tcl 및 .baseName.tcl이라는 이름의 프로필 파일을 읽고 해석하여 Tcl 인터프리터로 보내고 .className.py 및 .baseName.py의 내용에 대해 exec()를 호출한다. 프로필 파일의 경로는 HOME 환경 변수이거나 정의되지 않은 경우 os.curdir이다.
tk
The Tk application object created by instantiating Tk. This provides access to the Tcl interpreter. Each widget that is attached the same instance of Tk has the same value for its tk attribute.
Tk를 인스턴스화하여 만든 Tk 애플리케이션 객체이다. 이를 통해 Tcl 인터프리터에 액세스할 수 있다. 동일한 Tk 인스턴스에 연결된 각 위젯은 tk 속성에 대해 동일한 값을 갖는다.
master
The widget object that contains this widget. For Tk, the master is None because it is the main window. The terms master and parent are similar and sometimes used interchangeably as argument names; however, calling winfo_parent() returns a string of the widget name whereas master returns the object. parent/child reflects the tree-like relationship while master/slave reflects the container structure.
이 위젯을 포함하는 위젯 객체이다. Tk의 경우 master는 기본 창이기 때문에 None이다. master와 parent라는 용어는 유사하며 때로는 인수 이름으로 상호 교환하여 사용된다. 그러나 winfo_parent()를 호출하면 위젯 이름의 문자열이 반환되는 반면 master는 객체를 반환한다. parent/child는 트리와 같은 관계를 반영하는 반면 master/슬레이브는 컨테이너 구조를 반영한다.
children
The immediate descendants of this widget as a dict with the child widget names as the keys and the child instance objects as the values.
키가 자식 위젯 이름이고 값이 자식 인스턴스 객체인 dict인 이 위젯의 직계 후손
tkinter.Tcl(screenName=None, baseName=None, className='Tk', useTk=False)
The Tcl() function is a factory function which creates an object much like that created by the Tk class, except that it does not initialize the Tk subsystem. This is most often useful when driving the Tcl interpreter in an environment where one doesn’t want to create extraneous toplevel windows, or where one cannot (such as Unix/Linux systems without an X server). An object created by the Tcl() object can have a Toplevel window created (and the Tk subsystem initialized) by calling its loadtk() method.
The modules that provide Tk support include:
Tcl() 함수는 Tk 클래스에서 만든 것과 매우 유사한 객체를 만드는 팩토리 함수이지만 Tk 하위 시스템을 초기화하지 않는다. 이는 외부 최상위 창을 만들고 싶지 않거나 만들 수 없는 환경(예: X 서버가 없는 Unix/Linux 시스템)에서 Tcl 인터프리터를 구동할 때 가장 유용하다. Tcl() 객체에서 만든 객체는 loadtk() 메서드를 호출하여 최상위 창을 만들고(Tk 하위 시스템을 초기화)할 수 있다.
Tk 지원을 제공하는 모듈은 다음과 같다.
tkinter
Main Tkinter module.
tkinter.colorchooser
Dialog to let the user choose a color.
사용자가 색상을 선택할 수 있는 대화 상자이다.
tkinter.commondialog
Base class for the dialogs defined in the other modules listed here.
여기에 나열된 다른 모듈에서 정의된 대화 상자의 기본 클래스이다.
tkinter.filedialog
Common dialogs to allow the user to specify a file to open or save.
사용자가 열거나 저장할 파일을 지정할 수 있는 일반 대화 상자이다.
tkinter.font
Utilities to help work with fonts.
글꼴 작업을 돕는 유틸리티이다.
tkinter.messagebox
Access to standard Tk dialog boxes.
표준 Tk 대화 상자에 액세스한다.
tkinter.scrolledtext
Text widget with a vertical scroll bar built in.
수직 스크롤 막대가 내장된 텍스트 위젯이다.
tkinter.simpledialog
Basic dialogs and convenience functions.
기본 대화 상자 및 편의 기능이다.
tkinter.ttk
Themed widget set introduced in Tk 8.5, providing modern alternatives for many of the classic widgets in the main tkinter module.
Tk 8.5에 도입된 테마 위젯 세트로, 주요 tkinter 모듈의 많은 클래식 위젯에 대한 현대적인 대안을 제공한다.
Additional modules:
추가 모듈:
_tkinter
A binary module that contains the low-level interface to Tcl/Tk. It is automatically imported by the main tkinter module, and should never be used directly by application programmers. It is usually a shared library (or DLL), but might in some cases be statically linked with the Python interpreter.
Tcl/Tk에 대한 저수준 인터페이스를 포함하는 바이너리 모듈이다. 이 모듈은 메인 tkinter 모듈에서 자동으로 가져오며, 애플리케이션 프로그래머가 직접 사용해서는 안 된다. 일반적으로 공유 라이브러리(또는 DLL)이지만, 어떤 경우에는 Python 인터프리터와 정적으로 연결될 수 있다.
idlelib
Python’s Integrated Development and Learning Environment (IDLE). Based on tkinter.
Python의 통합 개발 및 학습 환경(IDLE). tkinter 기반이다.
tkinter.constants
Symbolic constants that can be used in place of strings when passing various parameters to Tkinter calls. Automatically imported by the main tkinter module.
Tkinter 호출에 다양한 매개변수를 전달할 때 문자열 대신 사용할 수 있는 심볼릭 상수이다. 메인 tkinter 모듈에서 자동으로 가져온다.
tkinter.dnd
(experimental) Drag-and-drop support for tkinter. This will become deprecated when it is replaced with the Tk DND.
(실험적) tkinter에 대한 드래그 앤 드롭 지원이다. Tk DND로 대체되면 더 이상 사용되지 않는다.
tkinter.tix
(deprecated) An older third-party Tcl/Tk package that adds several new widgets. Better alternatives for most can be found in tkinter.ttk.
(더 이상 사용되지 않음) 여러 개의 새로운 위젯을 추가하는 오래된 타사 Tcl/Tk 패키지이다. 대부분에 대한 더 나은 대안은 tkinter.ttk에서 찾을 수 있다.
turtle
Turtle graphics in a Tk window.
Tk 창의 거북이 그래픽.
Tkinter Life Preserver
This section is not designed to be an exhaustive tutorial on either Tk or Tkinter. For that, refer to one of the external resources noted earlier. Instead, this section provides a very quick orientation to what a Tkinter application looks like, identifies foundational Tk concepts, and explains how the Tkinter wrapper is structured.
The remainder of this section will help you to identify the classes, methods, and options you’ll need in your Tkinter application, and where to find more detailed documentation on them, including in the official Tcl/Tk reference manual.
이 섹션은 Tk 또는 Tkinter에 대한 철저한 튜토리얼이 되도록 설계되지 않았다. 이에 대해서는 앞서 언급한 외부 리소스 중 하나를 참조하라. 대신 이 섹션에서는 Tkinter 애플리케이션의 모습에 대한 매우 빠른 오리엔테이션을 제공하고, 기본적인 Tk 개념을 식별하고, Tkinter 래퍼가 어떻게 구성되어 있는지 설명한다.
이 섹션의 나머지 부분은 Tkinter 애플리케이션에 필요한 클래스, 메서드 및 옵션을 식별하고, 공식 Tcl/Tk 참조 설명서를 포함하여 이에 대한 더 자세한 문서를 찾을 수 있는 위치를 파악하는 데 도움이 된다.
A Hello World Program
We’ll start by walking through a “Hello World” application in Tkinter. This isn’t the smallest one we could write, but has enough to illustrate some key concepts you’ll need to know.
Tkinter에서 "Hello World" 애플리케이션을 살펴보는 것으로 시작한다. 이 애플리케이션은 가장 작은 것은 아니지만 알아야 할 핵심 개념을 설명하기에 충분하다.
from tkinter import * from tkinter import ttk root = Tk() frm = ttk.Frame(root, padding=10) frm.grid() ttk.Label(frm, text="Hello World!").grid(column=0, row=0) ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0) root.mainloop()
After the imports, the next line creates an instance of the Tk class, which initializes Tk and creates its associated Tcl interpreter. It also creates a toplevel window, known as the root window, which serves as the main window of the application.
The following line creates a frame widget, which in this case will contain a label and a button we’ll create next. The frame is fit inside the root window.
The next line creates a label widget holding a static text string. The grid() method is used to specify the relative layout (position) of the label within its containing frame widget, similar to how tables in HTML work.
A button widget is then created, and placed to the right of the label. When pressed, it will call the destroy() method of the root window.
Finally, the mainloop() method puts everything on the display, and responds to user input until the program terminates.
import 후 다음 줄은 Tk 클래스의 인스턴스를 생성하여 Tk를 초기화하고 연관된 Tcl 인터프리터를 생성한다. 또한 루트 창이라고 하는 최상위 창을 생성하여 애플리케이션의 주 창 역할을 한다.
다음 줄은 프레임 위젯을 생성하는데, 이 경우 레이블과 다음에 만들 버튼이 포함된다. 프레임은 루트 창 안에 맞춰진다.
다음 줄은 정적 텍스트 문자열을 포함하는 레이블 위젯을 생성한다. grid() 메서드는 HTML의 테이블이 작동하는 방식과 유사하게 포함된 프레임 위젯 내에서 레이블의 상대적 레이아웃(위치)을 지정하는 데 사용된다.
그런 다음 버튼 위젯이 생성되어 레이블 오른쪽에 배치된다. 누르면 루트 창의 destroy() 메서드가 호출된다.
마지막으로 mainloop() 메서드는 모든 것을 디스플레이에 표시하고 프로그램이 종료될 때까지 사용자 입력에 응답한다.
Important Tk Concepts
Even this simple program illustrates the following key Tk concepts:
이 간단한 프로그램에서도 다음과 같은 주요 Tk 개념을 보여준다.
widgets
A Tkinter user interface is made up of individual widgets. Each widget is represented as a Python object, instantiated from classes like ttk.Frame, ttk.Label, and ttk.Button.
Tkinter 사용자 인터페이스는 개별 위젯으로 구성된다. 각 위젯은 ttk.Frame, ttk.Label, ttk.Button과 같은 클래스에서 인스턴스화된 Python 객체로 표현된다.
widget hierarchy
Widgets are arranged in a hierarchy. The label and button were contained within a frame, which in turn was contained within the root window. When creating each child widget, its parent widget is passed as the first argument to the widget constructor.
위젯은 계층 구조로 배열된다. 레이블과 버튼은 프레임에 포함되었고, 프레임은 루트 창에 포함되었다. 각 자식 위젯을 만들 때 부모 위젯은 위젯 생성자의 첫 번째 인수로 전달된다.
configuration options
Widgets have configuration options, which modify their appearance and behavior, such as the text to display in a label or button. Different classes of widgets will have different sets of options.
위젯에는 레이블이나 버튼에 표시할 텍스트와 같이 모양과 동작을 수정하는 구성 옵션이 있다. 위젯 클래스마다 옵션 세트가 다르다.
geometry management
Widgets aren’t automatically added to the user interface when they are created. A geometry manager like grid controls where in the user interface they are placed.
위젯은 생성 시 사용자 인터페이스에 자동으로 추가되지 않는다. 그리드와 같은 지오메트리 관리자는 사용자 인터페이스에서 위젯이 배치되는 위치를 제어한다.
event loop
Tkinter reacts to user input, changes from your program, and even refreshes the display only when actively running an event loop. If your program isn’t running the event loop, your user interface won’t update.
Tkinter는 사용자 입력, 프로그램의 변경 사항에 반응하고 이벤트 루프를 적극적으로 실행할 때만 디스플레이를 새로 고친다. 프로그램에서 이벤트 루프를 실행하지 않으면 사용자 인터페이스가 업데이트되지 않는다.
Understanding How Tkinter Wraps Tcl/Tk
When your application uses Tkinter’s classes and methods, internally Tkinter is assembling strings representing Tcl/Tk commands, and executing those commands in the Tcl interpreter attached to your application’s Tk instance.
Whether it’s trying to navigate reference documentation, trying to find the right method or option, adapting some existing code, or debugging your Tkinter application, there are times that it will be useful to understand what those underlying Tcl/Tk commands look like.
To illustrate, here is the Tcl/Tk equivalent of the main part of the Tkinter script above.
애플리케이션에서 Tkinter의 클래스와 메서드를 사용할 때 Tkinter는 내부적으로 Tcl/Tk 명령을 나타내는 문자열을 조립하고 애플리케이션의 Tk 인스턴스에 연결된 Tcl 인터프리터에서 해당 명령을 실행한다.
참조 문서를 탐색하거나, 올바른 메서드나 옵션을 찾거나, 기존 코드를 조정하거나, Tkinter 애플리케이션을 디버깅하는 경우 기본 Tcl/Tk 명령이 어떤 것인지 이해하는 것이 유용할 때가 있다.
예를 들어, 위의 Tkinter 스크립트의 주요 부분에 해당하는 Tcl/Tk가 있다.
ttk::frame .frm -padding 10 grid .frm grid [ttk::label .frm.lbl -text "Hello World!"] -column 0 -row 0 grid [ttk::button .frm.btn -text "Quit" -command "destroy ."] -column 1 -row 0
Tcl’s syntax is similar to many shell languages, where the first word is the command to be executed, with arguments to that command following it, separated by spaces. Without getting into too many details, notice the following:
- The commands used to create widgets (like ttk::frame) correspond to widget classes in Tkinter.
- Tcl widget options (like -text) correspond to keyword arguments in Tkinter.
- Widgets are referred to by a pathname in Tcl (like .frm.btn), whereas Tkinter doesn’t use names but object references.
- A widget’s place in the widget hierarchy is encoded in its (hierarchical) pathname, which uses a . (dot) as a path separator. The pathname for the root window is just . (dot). In Tkinter, the hierarchy is defined not by pathname but by specifying the parent widget when creating each child widget.
- Operations which are implemented as separate commands in Tcl (like grid or destroy) are represented as methods on Tkinter widget objects. As you’ll see shortly, at other times Tcl uses what appear to be method calls on widget objects, which more closely mirror what would is used in Tkinter.
Tcl의 구문은 많은 셸 언어와 비슷하다. 첫 번째 단어는 실행할 명령이고, 그 뒤에 해당 명령에 대한 인수가 공백으로 구분되어 있다. 너무 많은 세부 사항은 다루지 않고, 다음 사항에 유의하라:
- 위젯을 만드는 데 사용되는 명령(ttk::frame 등)은 Tkinter의 위젯 클래스에 해당한다.
- Tcl 위젯 옵션(예: -text)은 Tkinter의 키워드 인수에 해당한다.
- 위젯은 Tcl에서 경로 이름(예: .frm.btn)으로 참조되는 반면 Tkinter는 이름이 아닌 객체 참조를 사용한다.
- 위젯 계층 구조에서 위젯의 위치는 경로 구분 기호로 .(점)을 사용하는 (계층적) 경로 이름으로 인코딩된다. 루트 창의 경로 이름은 .(점)이다. Tkinter에서 계층 구조는 경로 이름으로 정의되지 않고 각 자식 위젯을 만들 때 부모 위젯을 지정하여 정의된다.
- Tcl에서 별도의 명령(예: grid 또는 destroy)으로 구현된 작업은 Tkinter 위젯 객체의 메서드로 표현된다. 곧 알게 되겠지만, 다른 경우에는 Tcl이 위젯 객체에 메서드 호출을 사용하는 것처럼 보이는 것을 사용하는데, 이는 Tkinter에서 사용되는 것과 더 유사하다.
How do I…? What option does…?
If you’re not sure how to do something in Tkinter, and you can’t immediately find it in the tutorial or reference documentation you’re using, there are a few strategies that can be helpful.
First, remember that the details of how individual widgets work may vary across different versions of both Tkinter and Tcl/Tk. If you’re searching documentation, make sure it corresponds to the Python and Tcl/Tk versions installed on your system.
When searching for how to use an API, it helps to know the exact name of the class, option, or method that you’re using. Introspection, either in an interactive Python shell or with print(), can help you identify what you need.
To find out what configuration options are available on any widget, call its configure() method, which returns a dictionary containing a variety of information about each object, including its default and current values. Use keys() to get just the names of each option.
Tkinter에서 무언가를 하는 방법을 잘 모르겠고, 사용 중인 튜토리얼이나 참조 문서에서 바로 찾을 수 없는 경우, 도움이 될 수 있는 몇 가지 전략이 있다.
먼저, 개별 위젯의 작동 방식에 대한 세부 정보는 Tkinter와 Tcl/Tk의 버전에 따라 다를 수 있다는 점을 기억하라. 문서를 검색하는 경우 시스템에 설치된 Python 및 Tcl/Tk 버전과 일치하는지 확인하라.
API 사용 방법을 검색할 때는 사용 중인 클래스, 옵션 또는 메서드의 정확한 이름을 아는 것이 도움이 된다. 대화형 Python 셸이나 print()를 사용한 내성을 통해 필요한 것을 식별할 수 있다.
위젯에서 사용할 수 있는 구성 옵션을 알아보려면 해당 configure() 메서드를 호출한다. 이 메서드는 기본값과 현재 값을 포함하여 각 개체에 대한 다양한 정보가 포함된 사전을 반환한다. keys()를 사용하여 각 옵션의 이름만 가져온다.
btn = ttk.Button(frm, ...) print(btn.configure().keys())
As most widgets have many configuration options in common, it can be useful to find out which are specific to a particular widget class. Comparing the list of options to that of a simpler widget, like a frame, is one way to do that.
대부분 위젯은 많은 구성 옵션이 공통적으로 있으므로 특정 위젯 클래스에 고유한 옵션을 찾는 것이 유용할 수 있다. 옵션 목록을 프레임과 같은 더 간단한 위젯의 옵션 목록과 비교하는 것이 한 가지 방법이다.
print(set(btn.configure().keys()) - set(frm.configure().keys()))
Similarly, you can find the available methods for a widget object using the standard dir() function. If you try it, you’ll see there are over 200 common widget methods, so again identifying those specific to a widget class is helpful.
마찬가지로 표준 dir() 함수를 사용하여 위젯 객체에 사용 가능한 메서드를 찾을 수 있다. 시도해 보면 200개가 넘는 일반적인 위젯 메서드가 있으므로 위젯 클래스에 고유한 메서드를 다시 식별하는 것이 도움이 된다.
print(dir(btn)) print(set(dir(btn)) - set(dir(frm)))
Navigating the Tcl/Tk Reference Manual
As noted, the official Tk commands reference manual (man pages) is often the most accurate description of what specific operations on widgets do. Even when you know the name of the option or method that you need, you may still have a few places to look.
While all operations in Tkinter are implemented as method calls on widget objects, you’ve seen that many Tcl/Tk operations appear as commands that take a widget pathname as its first parameter, followed by optional parameters, e.g.
언급했듯이 공식 Tk 명령 참조 설명서(man 페이지)는 종종 위젯에서 특정 작업이 수행하는 작업에 대한 가장 정확한 설명이다. 필요한 옵션이나 메서드의 이름을 알고 있더라도 여전히 찾아볼 곳이 몇 군데 있을 수 있다.
Tkinter의 모든 연산은 위젯 객체에 대한 메서드 호출로 구현되지만, 많은 Tcl/Tk 연산이 위젯 경로명을 첫 번째 매개변수로 받고 그 뒤에 선택적 매개변수를 받는 명령으로 나타나는 것을 봤을 것이다. 예:
destroy . grid .frm.btn -column 0 -row 0
Others, however, look more like methods called on a widget object (in fact, when you create a widget in Tcl/Tk, it creates a Tcl command with the name of the widget pathname, with the first parameter to that command being the name of a method to call).
그러나 다른 연산은 위젯 객체에서 호출되는 메서드처럼 보인다(사실, Tcl/Tk에서 위젯을 만들면 위젯 경로명의 이름을 가진 Tcl 명령이 생성되고, 해당 명령의 첫 번째 매개변수는 호출할 메서드의 이름이다).
.frm.btn invoke .frm.lbl configure -text "Goodbye"
In the official Tcl/Tk reference documentation, you’ll find most operations that look like method calls on the man page for a specific widget (e.g., you’ll find the invoke() method on the ttk::button man page), while functions that take a widget as a parameter often have their own man page (e.g., grid).
You’ll find many common options and methods in the options or ttk::widget man pages, while others are found in the man page for a specific widget class.
You’ll also find that many Tkinter methods have compound names, e.g., winfo_x(), winfo_height(), winfo_viewable(). You’d find documentation for all of these in the winfo man page.
공식 Tcl/Tk 참조 문서에서 메서드 호출처럼 보이는 대부분의 연산은 특정 위젯의 매뉴얼 페이지에서 찾을 수 있다(예: ttk::button 매뉴얼 페이지에서 invoke() 메서드를 찾을 수 있음). 반면 위젯을 매개변수로 받는 함수는 종종 자체 매뉴얼 페이지(예: grid)를 갖는다.
옵션 또는 ttk::widget 매뉴얼 페이지에서 많은 일반적인 옵션과 메서드를 찾을 수 있고, 다른 옵션은 특정 위젯 클래스의 매뉴얼 페이지에서 찾을 수 있다.
또한 많은 Tkinter 메서드가 복합 이름을 가지고 있는 것을 알 수 있다(예: winfo_x(), winfo_height(), winfo_viewable()). winfo 매뉴얼 페이지에서 이러한 모든 메서드에 대한 설명서를 찾을 수 있다.
Note
Somewhat confusingly, there are also methods on all Tkinter widgets that don’t actually operate on the widget, but operate at a global scope, independent of any widget. Examples are methods for accessing the clipboard or the system bell. (They happen to be implemented as methods in the base Widget class that all Tkinter widgets inherit from).
다소 혼란스러울 수 있지만, 모든 Tkinter 위젯에는 위젯에서 실제로 작동하지 않지만 모든 위젯과 독립적으로 글로벌 범위에서 작동하는 메서드가 있다. 예를 들어 클립보드나 시스템 벨에 액세스하는 메서드가 있다. (이러한 메서드는 모든 Tkinter 위젯이 상속하는 기본 Widget 클래스의 메서드로 구현된다.)
Threading model
Python and Tcl/Tk have very different threading models, which tkinter tries to bridge. If you use threads, you may need to be aware of this.
A Python interpreter may have many threads associated with it. In Tcl, multiple threads can be created, but each thread has a separate Tcl interpreter instance associated with it. Threads can also create more than one interpreter instance, though each interpreter instance can be used only by the one thread that created it.
Each Tk object created by tkinter contains a Tcl interpreter. It also keeps track of which thread created that interpreter. Calls to tkinter can be made from any Python thread. Internally, if a call comes from a thread other than the one that created the Tk object, an event is posted to the interpreter’s event queue, and when executed, the result is returned to the calling Python thread.
Tcl/Tk applications are normally event-driven, meaning that after initialization, the interpreter runs an event loop (i.e. Tk.mainloop()) and responds to events. Because it is single-threaded, event handlers must respond quickly, otherwise they will block other events from being processed. To avoid this, any long-running computations should not run in an event handler, but are either broken into smaller pieces using timers, or run in another thread. This is different from many GUI toolkits where the GUI runs in a completely separate thread from all application code including event handlers.
If the Tcl interpreter is not running the event loop and processing events, any tkinter calls made from threads other than the one running the Tcl interpreter will fail.
A number of special cases exist:
Python과 Tcl/Tk는 매우 다른 스레딩 모델을 가지고 있으며, tkinter는 이를 연결하려고 한다. 스레드를 사용하는 경우 이 점을 알아야 할 수도 있다.
Python 인터프리터에는 여러 스레드가 연관될 수 있다. Tcl에서는 여러 스레드를 만들 수 있지만 각 스레드에는 별도의 Tcl 인터프리터 인스턴스가 연관된다. 스레드는 두 개 이상의 인터프리터 인스턴스를 만들 수도 있지만 각 인터프리터 인스턴스는 해당 인스턴스를 만든 스레드에서만 사용할 수 있다.
tkinter에서 만든 각 Tk 객체에는 Tcl 인터프리터가 들어 있다. 또한 해당 인터프리터를 만든 스레드도 추적한다. tkinter에 대한 호출은 모든 Python 스레드에서 이루어질 수 있다. 내부적으로 Tk 객체를 만든 스레드가 아닌 다른 스레드에서 호출이 발생하면 이벤트가 인터프리터의 이벤트 큐에 게시되고 실행되면 결과가 호출하는 Python 스레드로 반환된다.
Tcl/Tk 애플리케이션은 일반적으로 이벤트 중심이므로 초기화 후 인터프리터가 이벤트 루프(예: Tk.mainloop())를 실행하고 이벤트에 응답한다. 단일 스레드이므로 이벤트 핸들러는 빠르게 응답해야 하며 그렇지 않으면 다른 이벤트가 처리되지 않는다. 이를 방지하려면 장기 실행 계산은 이벤트 핸들러에서 실행되지 않고 타이머를 사용하여 더 작은 조각으로 나누거나 다른 스레드에서 실행해야 한다. 이는 GUI가 이벤트 핸들러를 포함한 모든 애플리케이션 코드와 완전히 별도의 스레드에서 실행되는 많은 GUI 툴킷과 다르다.
Tcl 인터프리터가 이벤트 루프를 실행하지 않고 이벤트를 처리하지 않는 경우 Tcl 인터프리터를 실행하는 스레드가 아닌 다른 스레드에서 수행된 모든 tkinter 호출은 실패한다.
몇 가지 특수한 경우가 있다.
- Tcl/Tk libraries can be built so they are not thread-aware. In this case, tkinter calls the library from the originating Python thread, even if this is different than the thread that created the Tcl interpreter. A global lock ensures only one call occurs at a time.
- While tkinter allows you to create more than one instance of a Tk object (with its own interpreter), all interpreters that are part of the same thread share a common event queue, which gets ugly fast. In practice, don’t create more than one instance of Tk at a time. Otherwise, it’s best to create them in separate threads and ensure you’re running a thread-aware Tcl/Tk build.
- Blocking event handlers are not the only way to prevent the Tcl interpreter from reentering the event loop. It is even possible to run multiple nested event loops or abandon the event loop entirely. If you’re doing anything tricky when it comes to events or threads, be aware of these possibilities.
- There are a few select tkinter functions that presently work only when called from the thread that created the Tcl interpreter.
- Tcl/Tk 라이브러리는 스레드를 인식하지 않도록 빌드할 수 있다. 이 경우 tkinter는 Tcl 인터프리터를 만든 스레드와 다르더라도 원래 Python 스레드에서 라이브러리를 호출한다. 전역 잠금은 한 번에 하나의 호출만 발생하도록 보장한다.
- tkinter를 사용하면 Tk 객체의 인스턴스를 두 개 이상 생성할 수 있지만(자체 인터프리터 포함), 동일한 스레드에 속한 모든 인터프리터는 공통 이벤트 큐를 공유하여 빠르게 보기 흉해진다. 실제로는 한 번에 두 개 이상의 Tk 인스턴스를 생성하지 않아야 한다. 그렇지 않으면 별도의 스레드에서 생성하고 스레드 인식 Tcl/Tk 빌드를 실행하는 것이 가장 좋다.
- 이벤트 핸들러를 차단하는 것은 Tcl 인터프리터가 이벤트 루프에 다시 진입하는 것을 방지하는 유일한 방법은 아니다. 여러 중첩 이벤트 루프를 실행하거나 이벤트 루프를 완전히 포기하는 것도 가능하다. 이벤트나 스레드와 관련하여 까다로운 작업을 수행하는 경우 이러한 가능성을 인식하라.
- 현재 Tcl 인터프리터를 만든 스레드에서 호출될 때만 작동하는 몇 가지 선택된 tkinter 함수가 있다.
Handy Reference
Setting Options
Options control things like the color and border width of a widget. Options can be set in three ways:
At object creation time, using keyword arguments
옵션은 위젯의 색상 및 테두리 너비와 같은 항목을 제어한다. 옵션은 세 가지 방법으로 설정할 수 있다.
개체 생성 시 키워드 인수 사용
fred = Button(self, fg="red", bg="blue")
After object creation, treating the option name like a dictionary index
개체 생성 후 옵션 이름을 사전 인덱스처럼 처리
fred["fg"] = "red" fred["bg"] = "blue"
Use the config() method to update multiple attrs subsequent to object creation
개체 생성 후 config() 메서드를 사용하여 여러 속성을 업데이트
fred.config(fg="red", bg="blue")
For a complete explanation of a given option and its behavior, see the Tk man pages for the widget in question.
Note that the man pages list “STANDARD OPTIONS” and “WIDGET SPECIFIC OPTIONS” for each widget. The former is a list of options that are common to many widgets, the latter are the options that are idiosyncratic to that particular widget. The Standard Options are documented on the options(3) man page.
No distinction between standard and widget-specific options is made in this document. Some options don’t apply to some kinds of widgets. Whether a given widget responds to a particular option depends on the class of the widget; buttons have a command option, labels do not.
The options supported by a given widget are listed in that widget’s man page, or can be queried at runtime by calling the config() method without arguments, or by calling the keys() method on that widget. The return value of these calls is a dictionary whose key is the name of the option as a string (for example, 'relief') and whose values are 5-tuples.
Some options, like bg are synonyms for common options with long names (bg is shorthand for “background”). Passing the config() method the name of a shorthand option will return a 2-tuple, not 5-tuple. The 2-tuple passed back will contain the name of the synonym and the “real” option (such as ('bg', 'background')).
지정된 옵션과 해당 동작에 대한 전체 설명은 해당 위젯의 Tk man 페이지를 참조하라.
각 위젯에 대한 "표준 옵션"과 "위젯 특정 옵션"이 매뉴얼 페이지에 나열되어 있다. 전자는 많은 위젯에 공통적인 옵션 목록이고, 후자는 해당 위젯에 고유한 옵션이다. 표준 옵션은 options(3)) 매뉴얼 페이지에 설명되어 있다.
이 문서에서는 표준 옵션과 위젯 특정 옵션의 구분이 없다. 일부 옵션은 일부 종류의 위젯에 적용되지 않는다. 주어진 위젯이 특정 옵션에 응답하는지 여부는 위젯의 클래스에 따라 달라진다. 버튼에는 명령 옵션이 있고 레이블에는 없다.
주어진 위젯에서 지원하는 옵션은 해당 위젯의 매뉴얼 페이지에 나열되어 있거나 인수 없이 config() 메서드를 호출하거나 해당 위젯에서 keys() 메서드를 호출하여 런타임에 쿼리할 수 있다. 이러한 호출의 반환 값은 키가 옵션의 이름을 문자열(예: 'relief')로 지정하고 값이 5-튜플인 사전이다.
bg와 같은 일부 옵션은 긴 이름을 가진 일반적인 옵션의 동의어이다(bg는 "background"의 약어이다). config() 메서드에 약어 옵션의 이름을 전달하면 5-튜플이 아닌 2-튜플이 반환된다. 다시 전달된 2-튜플에는 동의어 이름과 "실제" 옵션(예: ('bg', 'background'))이 포함된다.
Index Meaning Example 0 option name 'relief' 1 option name for database lookup 'relief' 2 option class for database lookup 'Relief' 3 default value 'raised' 4 current value 'groove' 색인 의미 예 0 옵션 이름 'relief' 1 데이터베이스 조회를 위한 옵션 이름 'relief' 2 데이터베이스 조회를 위한 옵션 클래스 'Relief' 3 기본값 'raised' 4 현재 값 'groove' print(fred.config()) # {'relief': ('relief', 'relief', 'Relief', 'raised', 'groove')}
Of course, the dictionary printed will include all the options available and their values. This is meant only as an example.
물론 인쇄된 사전에는 사용 가능한 모든 옵션과 해당 값이 포함된다. 이는 예시일 뿐이다.
The Packer
The packer is one of Tk’s geometry-management mechanisms. Geometry managers are used to specify the relative positioning of widgets within their container - their mutual master. In contrast to the more cumbersome placer (which is used less commonly, and we do not cover here), the packer takes qualitative relationship specification - above, to the left of, filling, etc - and works everything out to determine the exact placement coordinates for you.
The size of any master widget is determined by the size of the “slave widgets” inside. The packer is used to control where slave widgets appear inside the master into which they are packed. You can pack widgets into frames, and frames into other frames, in order to achieve the kind of layout you desire. Additionally, the arrangement is dynamically adjusted to accommodate incremental changes to the configuration, once it is packed.
Note that widgets do not appear until they have had their geometry specified with a geometry manager. It’s a common early mistake to leave out the geometry specification, and then be surprised when the widget is created but nothing appears. A widget will appear only after it has had, for example, the packer’s pack() method applied to it.
The pack() method can be called with keyword-option/value pairs that control where the widget is to appear within its container, and how it is to behave when the main application window is resized. Here are some examples:
패커는 Tk의 지오메트리 관리 메커니즘 중 하나이다. 지오메트리 관리자는 컨테이너(상호 마스터) 내에서 위젯의 상대적 위치를 지정하는 데 사용된다. 덜 일반적으로 사용되고 여기서 다루지 않는 더 번거로운 플레이서와 대조적으로, 패커는 위, 왼쪽, 채우기 등의 질적 관계 지정을 취하고 모든 것을 계산하여 정확한 배치 좌표를 결정한다.
모든 마스터 위젯의 크기는 내부의 "슬레이브 위젯"의 크기에 따라 결정된다. 패커는 슬레이브 위젯이 패키징된 마스터 내부에서 어디에 나타나는지 제어하는 데 사용된다. 위젯을 프레임에 패키징하고, 프레임을 다른 프레임에 패키징하여 원하는 종류의 레이아웃을 얻을 수 있다. 또한, 패키징되면 구성에 대한 점진적인 변경 사항을 수용하도록 배열이 동적으로 조정된다.
위젯은 지오메트리 관리자로 지오메트리를 지정하기 전까지는 나타나지 않는다. 지오메트리 사양을 생략하고 위젯을 생성했지만 아무것도 나타나지 않을 때 놀라는 것은 흔한 초기 실수이다. 위젯은 예를 들어 패커의 pack() 메서드가 적용된 후에만 나타난다.
pack() 메서드는 위젯이 컨테이너 내에서 어디에 나타날지, 메인 애플리케이션 창의 크기가 조정될 때 어떻게 동작할지 제어하는 키워드-옵션/값 쌍으로 호출할 수 있다. 다음은 몇 가지 예이다.
fred.pack() # defaults to side = "top" fred.pack(side="left") fred.pack(expand=1)
Packer Options
For more extensive information on the packer and the options that it can take, see the man pages and page 183 of John Ousterhout’s book.
패커와 패커가 취할 수 있는 옵션에 대한 자세한 내용은 John Ousterhout의 책의 man 페이지와 183페이지를 참조하라.
anchor
Anchor type. Denotes where the packer is to place each slave in its parcel.
앵커 유형이다. 패커가 각 슬레이브를 해당 파셀에 배치할 위치를 나타낸다.
expand
Boolean, 0 or 1.
부울, 0 또는 1.
fill
Legal values: 'x', 'y', 'both', 'none'.
유효 값: 'x', 'y', 'both', 'none'.
ipadx and ipady
A distance - designating internal padding on each side of the slave widget.
거리 - 슬레이브 위젯의 각 면에 내부 패딩을 지정한다.
padx and pady
A distance - designating external padding on each side of the slave widget.
거리 - 슬레이브 위젯의 각 면에 외부 패딩을 지정한다.
side
Legal values are: 'left', 'right', 'top', 'bottom'.
side
유효 값: 'left', 'right', 'top', 'bottom'
Coupling Widget Variables
The current-value setting of some widgets (like text entry widgets) can be connected directly to application variables by using special options. These options are variable, textvariable, onvalue, offvalue, and value. This connection works both ways: if the variable changes for any reason, the widget it’s connected to will be updated to reflect the new value.
Unfortunately, in the current implementation of tkinter it is not possible to hand over an arbitrary Python variable to a widget through a variable or textvariable option. The only kinds of variables for which this works are variables that are subclassed from a class called Variable, defined in tkinter.
There are many useful subclasses of Variable already defined: StringVar, IntVar, DoubleVar, and BooleanVar. To read the current value of such a variable, call the get() method on it, and to change its value you call the set() method. If you follow this protocol, the widget will always track the value of the variable, with no further intervention on your part.
For example:
일부 위젯(예: 텍스트 입력 위젯)의 현재 값 설정은 특수 옵션을 사용하여 애플리케이션 변수에 직접 연결할 수 있다. 이러한 옵션은 variable, textvariable, onvalue, offvalue 및 value이다. 이 연결은 양방향으로 작동한다. 변수가 어떤 이유로든 변경되면 연결된 위젯이 업데이트되어 새 값을 반영한다.
안타깝게도 tkinter의 현재 구현에서는 variable 또는 textvariable 옵션을 통해 임의의 Python 변수를 위젯에 넘길 수 없다. 이 기능이 작동하는 유일한 변수 종류는 tkinter에 정의된 Variable이라는 클래스에서 하위 클래스화된 변수이다.
이미 정의된 Variable의 유용한 하위 클래스는 StringVar, IntVar, DoubleVar 및 BooleanVar이다. 이러한 변수의 현재 값을 읽으려면 해당 변수에 get() 메서드를 호출하고 값을 변경하려면 set() 메서드를 호출한다. 이 프로토콜을 따르면 위젯은 사용자가 추가로 개입하지 않아도 항상 변수 값을 추적한다.
예:
import tkinter as tk class App(tk.Frame): def __init__(self, master): super().__init__(master) self.pack() self.entrythingy = tk.Entry() self.entrythingy.pack() # Create the application variable. self.contents = tk.StringVar() # Set it to some value. self.contents.set("this is a variable") # Tell the entry widget to watch this variable. self.entrythingy["textvariable"] = self.contents # Define a callback for when the user hits return. # It prints the current value of the variable. self.entrythingy.bind('', self.print_contents) def print_contents(self, event): print("Hi. The current entry content is:", self.contents.get()) root = tk.Tk() myapp = App(root) myapp.mainloop()
The Window Manager
In Tk, there is a utility command, wm, for interacting with the window manager. Options to the wm command allow you to control things like titles, placement, icon bitmaps, and the like. In tkinter, these commands have been implemented as methods on the Wm class. Toplevel widgets are subclassed from the Wm class, and so can call the Wm methods directly.
To get at the toplevel window that contains a given widget, you can often just refer to the widget’s master. Of course if the widget has been packed inside of a frame, the master won’t represent a toplevel window. To get at the toplevel window that contains an arbitrary widget, you can call the _root() method. This method begins with an underscore to denote the fact that this function is part of the implementation, and not an interface to Tk functionality.
Here are some examples of typical usage:
Tk에는 창 관리자와 상호 작용하기 위한 유틸리티 명령인 wm이 있다. wm 명령의 옵션을 사용하면 제목, 배치, 아이콘 비트맵 등을 제어할 수 있다. tkinter에서 이러한 명령은 Wm 클래스의 메서드로 구현되었다. 최상위 위젯은 Wm 클래스에서 하위 클래스화되므로 Wm 메서드를 직접 호출할 수 있다.
주어진 위젯이 포함된 최상위 창으로 이동하려면 위젯의 마스터를 참조하기만 하면 된다. 물론 위젯이 프레임 내부에 패킹된 경우 마스터는 최상위 창을 나타내지 않는다. 임의의 위젯을 포함하는 최상위 창으로 이동하려면 _root() 메서드를 호출하면 된다. 이 메서드는 이 함수가 구현의 일부이며 Tk 기능에 대한 인터페이스가 아니라는 사실을 나타내는 밑줄로 시작한다.
다음은 일반적인 사용 사례이다.
import tkinter as tk class App(tk.Frame): def __init__(self, master=None): super().__init__(master) self.pack() # create the application myapp = App() # # here are method calls to the window manager class # myapp.master.title("My Do-Nothing Application") myapp.master.maxsize(1000, 400) # start the program myapp.mainloop()
Tk Option Data Types
anchor
Legal values are points of the compass: "n", "ne", "e", "se", "s", "sw", "w", "nw", and also "center".
유효한 값은 나침반의 지점이다. "n", "ne", "e", "se", "s", "sw", "w", "nw", 그리고 "center"도 있다.
bitmap
There are eight built-in, named bitmaps: 'error', 'gray25', 'gray50', 'hourglass', 'info', 'questhead', 'question', 'warning'. To specify an X bitmap filename, give the full path to the file, preceded with an @, as in "@/usr/contrib/bitmap/gumby.bit".
내장된 명명된 비트맵은 8개가 있다. 'error', 'gray25', 'gray50', 'hourglass', 'info', 'questhead', 'question', 'warning'. X 비트맵 파일 이름을 지정하려면 "@/usr/contrib/bitmap/gumby.bit"처럼 @로 시작하는 파일의 전체 경로를 지정한다.
boolean
You can pass integers 0 or 1 or the strings "yes" or "no".
정수 0 또는 1이나 문자열 "yes" 또는 "no"를 전달할 수 있다.
callback
This is any Python function that takes no arguments. For example:
인수를 사용하지 않는 모든 Python 함수이다. 예:
def print_it(): print("hi there") fred["command"] = print_it
color
Colors can be given as the names of X colors in the rgb.txt file, or as strings representing RGB values in 4 bit: "#RGB", 8 bit: "#RRGGBB", 12 bit: "#RRRGGGBBB", or 16 bit: "#RRRRGGGGBBBB" ranges, where R,G,B here represent any legal hex digit. See page 160 of Ousterhout’s book for details.
색상은 rgb.txt 파일에 있는 X 색상 이름으로 지정하거나 4비트: "#RGB", 8비트: "#RRGGBB", 12비트: "#RRRGGGBBB" 또는 16비트: "#RRRRGGGGBBBB" 범위의 RGB 값을 나타내는 문자열로 지정할 수 있다. 여기서 R, G, B는 모든 유효한 16진수를 나타낸다. 자세한 내용은 Ousterhout의 책 160페이지를 참조하라.
cursor
The standard X cursor names from cursorfont.h can be used, without the XC_ prefix. For example to get a hand cursor (XC_hand2), use the string "hand2". You can also specify a bitmap and mask file of your own. See page 179 of Ousterhout’s book.
XC_ 접두사 없이 cursorfont.h의 표준 X 커서 이름을 사용할 수 있다. 예를 들어 손 모양 커서(XC_hand2)를 얻으려면 문자열 "hand2"를 사용한다. 또한 자신의 비트맵과 마스크 파일을 지정할 수도 있다. Ousterhout의 책 179페이지를 참조하라.
distance
Screen distances can be specified in either pixels or absolute distances. Pixels are given as numbers and absolute distances as strings, with the trailing character denoting units: c for centimetres, i for inches, m for millimetres, p for printer’s points. For example, 3.5 inches is expressed as "3.5i".
화면 거리는 픽셀 또는 절대 거리로 지정할 수 있다. 픽셀은 숫자로, 절대 거리는 문자열로 지정되며, 끝에 붙은 문자는 단위를 나타낸다. 센티미터는 c, 인치는 i, 밀리미터는 m, 프린터 포인트는 p이다. 예를 들어, 3.5인치는 "3.5i"로 표현된다.
font
Tk uses a list font name format, such as {courier 10 bold}. Font sizes with positive numbers are measured in points; sizes with negative numbers are measured in pixels.
Tk는 {courier 10 bold}와 같은 목록 글꼴 이름 형식을 사용한다. 양수 글꼴 크기는 포인트로 측정되고, 음수 글꼴 크기는 픽셀로 측정된다.
geometry
This is a string of the form widthxheight, where width and height are measured in pixels for most widgets (in characters for widgets displaying text). For example: fred["geometry"] = "200x100".
이것은 widthxheight 형식의 문자열이며, 여기서 너비와 높이는 대부분 위젯의 경우 픽셀로 측정된다(텍스트를 표시하는 위젯의 경우 문자). 예를 들어: fred["geometry"] = "200x100".
justify
Legal values are the strings: "left", "center", "right", and "fill".
유효한 값은 문자열 "left", "center", "right", "fill"이다.
region
This is a string with four space-delimited elements, each of which is a legal distance (see above). For example: "2 3 4 5" and "3i 2i 4.5i 2i" and "3c 2c 4c 10.43c" are all legal regions.
이것은 공백으로 구분된 4개의 요소가 있는 문자열이며, 각각은 유효한 거리이다(위 참조). 예를 들어 "2 3 4 5"와 "3i 2i 4.5i 2i"와 "3c 2c 4c 10.43c"는 모두 유효한 영역이다.
relief
Determines what the border style of a widget will be. Legal values are: "raised", "sunken", "flat", "groove", and "ridge".
위젯의 테두리 스타일을 결정한다. 유효한 값은 "raised", "sunken", "flat", "groove", "ridge"이다.
scrollcommand
This is almost always the set() method of some scrollbar widget, but can be any widget method that takes a single argument.
이것은 거의 항상 일부 스크롤바 위젯의 set() 메서드이지만, 단일 인수를 취하는 모든 위젯 메서드가 될 수 있다.
wrap
Must be one of: "none", "char", or "word".
다음 중 하나여야 한다: "none", "char", 또는 "word".
Bindings and Events
The bind method from the widget command allows you to watch for certain events and to have a callback function trigger when that event type occurs. The form of the bind method is:
위젯 명령의 bind 메서드를 사용하면 특정 이벤트를 감시하고 해당 이벤트 유형이 발생하면 콜백 함수가 트리거되도록 할 수 있다. bind 메서드의 형식은 다음과 같다.
def bind(self, sequence, func, add=''):
where:
여기서:
sequence
is a string that denotes the target kind of event. (See the bind(3tk) man page, and page 201 of John Ousterhout’s book, Tcl and the Tk Toolkit (2nd edition), for details).
대상 이벤트 종류를 나타내는 문자열이다. (자세한 내용은 bind(3tk) 매뉴얼 페이지와 John Ousterhout의 책 Tcl and the Tk Toolkit(2nd edition)의 201페이지를 참조하라.)
func
is a Python function, taking one argument, to be invoked when the event occurs. An Event instance will be passed as the argument. (Functions deployed this way are commonly known as callbacks.)
이벤트가 발생하면 호출되는 인수 하나를 취하는 Python 함수이다. 이벤트 인스턴스가 인수로 전달된다. (이런 방식으로 배포된 함수는 일반적으로 콜백이라고 한다.)
add
is optional, either '' or '+'. Passing an empty string denotes that this binding is to replace any other bindings that this event is associated with. Passing a '+' means that this function is to be added to the list of functions bound to this event type.
For example:
'' 또는 '+' 중 하나를 선택할 수 있다. 빈 문자열을 전달하면 이 바인딩이 이 이벤트와 연관된 다른 바인딩을 대체한다는 것을 나타낸다. '+'를 전달하면 이 함수가 이 이벤트 유형에 바인딩된 함수 목록에 추가된다는 것을 의미한다.
예:
def turn_red(self, event): event.widget["activeforeground"] = "red" self.button.bind("", self.turn_red)
Notice how the widget field of the event is being accessed in the turn_red() callback. This field contains the widget that caught the X event. The following table lists the other event fields you can access, and how they are denoted in Tk, which can be useful when referring to the Tk man pages.
turn_red() 콜백에서 이벤트의 위젯 필드에 액세스하는 방법에 유의하라. 이 필드에는 X 이벤트를 포착한 위젯이 들어 있다. 다음 표에는 액세스할 수 있는 다른 이벤트 필드와 Tk에서 이러한 필드를 표시하는 방법이 나와 있으며, 이는 Tk man 페이지를 참조할 때 유용할 수 있다.
Tk Tkinter Event Field Tk Tkinter Event Field %f focus %A char %h height %E send_event %k keycode %K keysym %s state %N keysym_num %t time %T type %w width %W widget %x x %X x_root %y y %Y y_root The index Parameter
A number of widgets require “index” parameters to be passed. These are used to point at a specific place in a Text widget, or to particular characters in an Entry widget, or to particular menu items in a Menu widget.
여러 위젯은 "인덱스" 매개변수를 전달해야 한다. 이는 텍스트 위젯의 특정 위치나 항목 위젯의 특정 문자, 메뉴 위젯의 특정 메뉴 항목을 가리키는 데 사용된다.
Entry widget indexes (index, view index, etc.)
Entry widgets have options that refer to character positions in the text being displayed. You can use these tkinter functions to access these special points in text widgets:
엔트리 위젯에는 표시되는 텍스트의 문자 위치를 참조하는 옵션이 있다. 다음 tkinter 함수를 사용하여 텍스트 위젯의 이러한 특수 지점에 액세스할 수 있다.
Text widget indexes
The index notation for Text widgets is very rich and is best described in the Tk man pages.
텍스트 위젯의 인덱스 표기법은 매우 풍부하며 Tk 매뉴얼 페이지에 가장 잘 설명되어 있다.
Menu indexes (menu.invoke(), menu.entryconfig(), etc.)
Some options and methods for menus manipulate specific menu entries. Anytime a menu index is needed for an option or a parameter, you may pass in:
메뉴의 일부 옵션과 메서드는 특정 메뉴 항목을 조작한다. 옵션이나 매개변수에 메뉴 인덱스가 필요할 때마다 다음을 전달할 수 있다.
- an integer which refers to the numeric position of the entry in the widget, counted from the top, starting with 0;
- the string "active", which refers to the menu position that is currently under the cursor;
- the string "last" which refers to the last menu item;
- An integer preceded by @, as in @6, where the integer is interpreted as a y pixel coordinate in the menu’s coordinate system;
- the string "none", which indicates no menu entry at all, most often used with menu.activate() to deactivate all entries, and finally,
- a text string that is pattern matched against the label of the menu entry, as scanned from the top of the menu to the bottom. Note that this index type is considered after all the others, which means that matches for menu items labelled last, active, or none may be interpreted as the above literals, instead.
- 위젯에서 항목의 숫자 위치를 나타내는 정수로, 위에서부터 세어 0부터 시작한다.
- 현재 커서 아래에 있는 메뉴 위치를 나타내는 문자열 "active"
- 마지막 메뉴 항목을 나타내는 문자열 "last"
- @6처럼 @로 시작하는 정수는 정수가 메뉴 좌표계의 y 픽셀 좌표로 해석된다.
- 메뉴 항목이 전혀 없음을 나타내는 문자열 "none"은 가장 자주 menu.activate()와 함께 사용되어 모든 항목을 비활성화하고, 마지막으로
- 메뉴 상단에서 하단으로 스캔한 메뉴 항목의 레이블과 패턴이 일치하는 텍스트 문자열이다. 이 인덱스 유형은 다른 모든 유형 이후에 고려되므로 last, active 또는 none으로 레이블이 지정된 메뉴 항목에 대한 일치 항목은 대신 위의 리터럴로 해석될 수 있다.
Images
Images of different formats can be created through the corresponding subclass of tkinter.Image:
tkinter.Image의 해당 하위 클래스를 통해 다양한 형식의 이미지를 만들 수 있다.
- BitmapImage for images in XBM format.
- PhotoImage for images in PGM, PPM, GIF and PNG formats. The latter is supported starting with Tk 8.6.
- XBM 형식의 이미지의 경우 BitmapImage이다.
- PGM, PPM, GIF 및 PNG 형식의 이미지의 경우 PhotoImage이다. 후자는 Tk 8.6부터 지원된다.
Either type of image is created through either the file or the data option (other options are available as well).
The image object can then be used wherever an image option is supported by some widget (e.g. labels, buttons, menus). In these cases, Tk will not keep a reference to the image. When the last Python reference to the image object is deleted, the image data is deleted as well, and Tk will display an empty box wherever the image was used.
두 가지 유형의 이미지는 파일 또는 데이터 옵션을 통해 생성된다(다른 옵션도 사용 가능).
이미지 객체는 위젯(예: 레이블, 버튼, 메뉴)에서 이미지 옵션을 지원하는 모든 곳에서 사용할 수 있다. 이러한 경우 Tk는 이미지에 대한 참조를 유지하지 않는다. 이미지 객체에 대한 마지막 Python 참조가 삭제되면 이미지 데이터도 삭제되고 Tk는 이미지가 사용된 모든 곳에 빈 상자를 표시한다.
See also
The Pillow package adds support for formats such as BMP, JPEG, TIFF, and WebP, among others.
Pillow 패키지는 BMP, JPEG, TIFF, WebP 등의 형식에 대한 지원을 추가한다.
File Handlers
Tk allows you to register and unregister a callback function which will be called from the Tk mainloop when I/O is possible on a file descriptor. Only one handler may be registered per file descriptor. Example code:
Tk를 사용하면 파일 설명자에서 I/O가 가능할 때 Tk 메인 루프에서 호출되는 콜백 함수를 등록 및 등록 해제할 수 있다. 파일 설명자당 하나의 핸들러만 등록할 수 있다. 예제 코드:
import tkinter widget = tkinter.Tk() mask = tkinter.READABLE | tkinter.WRITABLE widget.tk.createfilehandler(file, mask, callback) ... widget.tk.deletefilehandler(file)
This feature is not available on Windows.
Since you don’t know how many bytes are available for reading, you may not want to use the BufferedIOBase or TextIOBase read() or readline() methods, since these will insist on reading a predefined number of bytes. For sockets, the recv() or recvfrom() methods will work fine; for other files, use raw reads or os.read(file.fileno(), maxbytecount).
이 기능은 Windows에서 사용할 수 없다.
읽을 수 있는 바이트 수를 알 수 없으므로 BufferedIOBase 또는 TextIOBase read() 또는 readline() 메서드를 사용하지 않으려 할 수 있다. 이러한 메서드는 미리 정의된 바이트 수를 읽어야 하기 때문이다. 소켓의 경우 recv() 또는 recvfrom() 메서드가 잘 작동한다. 다른 파일의 경우 raw reads 또는 os.read(file.fileno(), maxbytecount)를 사용한다.
Widget.tk.createfilehandler(file, mask, func)
Registers the file handler callback function func. The file argument may either be an object with a fileno() method (such as a file or socket object), or an integer file descriptor. The mask argument is an ORed combination of any of the three constants below. The callback is called as follows:
파일 핸들러 콜백 함수 func를 등록한다. file 인수는 fileno() 메서드가 있는 객체(예: 파일 또는 소켓 객체)이거나 정수 파일 설명자일 수 있다. mask 인수는 아래 세 상수 중 하나를 OR로 조합한 것이다. 콜백은 다음과 같이 호출된다.
callback(file, mask)
Widget.tk.deletefilehandler(file)
Unregisters a file handler.
파일 핸들러를 등록 해제한다.
_tkinter.READABLE
_tkinter.WRITABLE
_tkinter.EXCEPTION
Constants used in the mask arguments.
마스크 인수에 사용되는 상수.
tkinter.colorchooser — Color choosing dialog
The tkinter.colorchooser module provides the Chooser class as an interface to the native color picker dialog. Chooser implements a modal color choosing dialog window. The Chooser class inherits from the Dialog class.
tkinter.colorchooser 모듈은 기본 색상 선택 대화 상자에 대한 인터페이스로 Chooser 클래스를 제공한다. Chooser는 모달 색상 선택 대화 상자 창을 구현한다. Chooser 클래스는 Dialog 클래스에서 상속된다.
class tkinter.colorchooser.Chooser(master=None, **options)
tkinter.colorchooser.askcolor(color=None, **options)
Create a color choosing dialog. A call to this method will show the window, wait for the user to make a selection, and return the selected color (or None) to the caller.
색상 선택 대화 상자를 만든다. 이 메서드를 호출하면 창이 표시되고, 사용자가 선택할 때까지 기다린 다음, 선택한 색상(또는 None)을 호출자에게 반환한다.
See also
Module tkinter.commondialog
Tkinter standard dialog module
tkinter.font — Tkinter font wrapper
The tkinter.font module provides the Font class for creating and using named fonts.
The different font weights and slants are:
tkinter.font 모듈은 명명된 글꼴을 만들고 사용하기 위한 Font 클래스를 제공한다.
다양한 글꼴 두께와 기울기는 다음과 같다.
tkinter.font.NORMAL
tkinter.font.BOLD
tkinter.font.ITALIC
tkinter.font.ROMAN
class tkinter.font.Font(root=None, font=None, name=None, exists=False, **options)
The Font class represents a named font. Font instances are given unique names and can be specified by their family, size, and style configuration. Named fonts are Tk’s method of creating and identifying fonts as a single object, rather than specifying a font by its attributes with each occurrence.
Font 클래스는 명명된 글꼴을 나타낸다. 글꼴 인스턴스에는 고유한 이름이 지정되며 패밀리, 크기 및 스타일 구성으로 지정할 수 있다. 명명된 글꼴은 각 발생 시 글꼴의 속성으로 글꼴을 지정하는 대신 단일 개체로 글꼴을 만들고 식별하는 Tk의 방법이다.
arguments:
font - font specifier tuple (family, size, options)
name - unique font name
exists - self points to existing named font if true
font - 글꼴 지정자 튜플(family, size, options)
name - 고유한 글꼴 이름
exists - true인 경우 self가 기존 명명된 글꼴을 가리킴
additional keyword options (ignored if font is specified):
family - font family i.e. Courier, Times
size - font size
> If size is positive it is interpreted as size in points.
> If size is a negative number its absolute value is treated as size in pixels.
weight - font emphasis (NORMAL, BOLD)
slant - ROMAN, ITALIC
underline - font underlining (0 - none, 1 - underline)
overstrike - font strikeout (0 - none, 1 - strikeout)
family - 글꼴 패밀리(예: Courier, Times)
size - 글꼴 크기
> size가 양수이면 포인트 단위로 크기로 해석된다.
> size가 음수이면 절대값이 픽셀 단위로 크기로 처리된다.
weight - 글꼴 강조(NORMAL, BOLD)
slant - ROMAN, ITALIC
underline - 글꼴 밑줄(0 - 없음, 1 - 밑줄)
overstrike - 글꼴 취소선(0 - 없음, 1 - 취소선)
actual(option=None, displayof=None)
Return the attributes of the font.
글꼴의 속성을 반환한다.
cget(option)
Retrieve an attribute of the font.
글꼴의 속성을 검색한다.
config(**options)
Modify attributes of the font.
글꼴의 속성을 수정한다.
copy()
Return new instance of the current font.
현재 글꼴의 새 인스턴스를 반환한다.
measure(text, displayof=None)
Return amount of space the text would occupy on the specified display when formatted in the current font. If no display is specified then the main application window is assumed.
현재 글꼴로 포맷할 때 지정된 디스플레이에서 텍스트가 차지하는 공간의 양을 반환한다. 디스플레이가 지정되지 않으면 기본 애플리케이션 창이 가정된다.
metrics(*options, **kw)
Return font-specific data. Options include:
글꼴별 데이터를 반환한다. 옵션은 다음과 같다.
ascent - distance between baseline and highest point that a character of the font can occupy
descent - distance between baseline and lowest point that a character of the font can occupy
linespace - minimum vertical separation necessary between any two characters of the font that ensures no vertical overlap between lines.
fixed - 1 if font is fixed-width else 0
ascent - 글꼴의 문자가 차지할 수 있는 기준선과 가장 높은 지점 사이의 거리
descent - 글꼴의 문자가 차지할 수 있는 가장 낮은 지점과 기준선 사이의 거리
linespace - 글꼴의 두 문자 사이에 필요한 최소 수직 분리로, 줄 사이에 수직 겹침이 발생하지 않도록 한다.
fixed - 글꼴이 고정 너비이면 1, 그렇지 않으면 0
tkinter.font.families(root=None, displayof=None)
Return the different font families.
다른 글꼴 패밀리를 반환한다.
tkinter.font.names(root=None)
Return the names of defined fonts.
정의된 글꼴의 이름을 반환한다.
tkinter.font.nametofont(name, root=None)
Return a Font representation of a tk named font.
Changed in version 3.10: The root parameter was added.
tk로 명명된 글꼴의 글꼴 표현을 반환한다.
버전 3.10에서 변경: root 매개변수가 추가되었다.
Tkinter Dialogs
tkinter.simpledialog — Standard Tkinter input dialogs
The tkinter.simpledialog module contains convenience classes and functions for creating simple modal dialogs to get a value from the user.
tkinter.simpledialog 모듈에는 사용자로부터 값을 얻기 위한 간단한 모달 대화 상자를 만드는 데 필요한 편의 클래스와 함수가 포함되어 있다.
tkinter.simpledialog.askfloat(title, prompt, **kw)
tkinter.simpledialog.askinteger(title, prompt, **kw)
tkinter.simpledialog.askstring(title, prompt, **kw)
The above three functions provide dialogs that prompt the user to enter a value of the desired type.
위의 세 가지 함수는 사용자에게 원하는 유형의 값을 입력하라는 메시지를 표시하는 대화 상자를 제공한다.
class tkinter.simpledialog.Dialog(parent, title=None)
The base class for custom dialogs.
사용자 정의 대화 상자의 기본 클래스이다.
body(master)
Override to construct the dialog’s interface and return the widget that should have initial focus.
대화 상자의 인터페이스를 구성하고 초기 포커스가 있어야 하는 위젯을 반환하도록 재정의한다.
buttonbox()
Default behaviour adds OK and Cancel buttons. Override for custom button layouts.
기본 동작은 확인 및 취소 버튼을 추가한다. 사용자 정의 버튼 레이아웃을 재정의한다.
tkinter.filedialog — File selection dialogs
The tkinter.filedialog module provides classes and factory functions for creating file/directory selection windows.
tkinter.filedialog 모듈은 파일/디렉토리 선택 창을 만드는 클래스와 팩토리 함수를 제공한다.
Native Load/Save Dialogs
The following classes and functions provide file dialog windows that combine a native look-and-feel with configuration options to customize behaviour. The following keyword arguments are applicable to the classes and functions listed below:
다음 클래스와 함수는 동작을 사용자 정의하기 위한 구성 옵션과 네이티브 모양과 느낌을 결합한 파일 대화 상자 창을 제공한다. 다음 키워드 인수는 아래에 나열된 클래스와 함수에 적용할 수 있다.
parent - the window to place the dialog on top of
title - the title of the window
initialdir - the directory that the dialog starts in
initialfile - the file selected upon opening of the dialog
filetypes - a sequence of (label, pattern) tuples, ‘*’ wildcard is allowed
defaultextension - default extension to append to file (save dialogs)
multiple - when true, selection of multiple items is allowed
parent - 대화 상자를 위에 놓을 창
title - 창 제목
initialdir - 대화 상자가 시작되는 디렉토리
initialfile - 대화 상자를 열 때 선택한 파일
filetypes - 일련의 (레이블, 패턴) 튜플, '*' 와일드카드 허용
defaultextension - 파일에 추가할 기본 확장자(대화 상자 저장)
multiple - true인 경우 여러 항목 선택 허용
Static factory functions
The below functions when called create a modal, native look-and-feel dialog, wait for the user’s selection, then return the selected value(s) or None to the caller.
아래 함수는 호출 시 모달, 네이티브 모양과 느낌의 대화 상자를 만들고, 사용자의 선택을 기다린 다음, 선택한 값이나 None을 호출자에게 반환한다.
tkinter.filedialog.askopenfile(mode='r', **options)
tkinter.filedialog.askopenfiles(mode='r', **options)
The above two functions create an Open dialog and return the opened file object(s) in read-only mode.
위의 두 함수는 Open 대화 상자를 만들고 읽기 전용 모드로 열린 파일 객체를 반환한다.
tkinter.filedialog.asksaveasfile(mode='w', **options)
Create a SaveAs dialog and return a file object opened in write-only mode.
SaveAs 대화 상자를 만들고 쓰기 전용 모드로 열린 파일 객체를 반환한다.
tkinter.filedialog.askopenfilename(**options)
tkinter.filedialog.askopenfilenames(**options)
The above two functions create an Open dialog and return the selected filename(s) that correspond to existing file(s).
위의 두 함수는 Open 대화 상자를 만들고 기존 파일에 해당하는 선택된 파일 이름을 반환한다.
tkinter.filedialog.asksaveasfilename(**options)
Create a SaveAs dialog and return the selected filename.
SaveAs 대화 상자를 만들고 선택한 파일 이름을 반환한다.
tkinter.filedialog.askdirectory(**options)
Prompt user to select a directory.
사용자에게 디렉토리를 선택하라는 메시지를 표시한다.
Additional keyword option:
mustexist - determines if selection must be an existing directory.
추가 키워드 옵션:
mustexist - 선택 항목이 기존 디렉토리여야 하는지 여부를 결정한다.
class tkinter.filedialog.Open(master=None, **options)
class tkinter.filedialog.SaveAs(master=None, **options)
The above two classes provide native dialog windows for saving and loading files.
위의 두 클래스는 파일을 저장하고 로드하기 위한 기본 대화 상자 창을 제공한다.
Convenience classes
The below classes are used for creating file/directory windows from scratch. These do not emulate the native look-and-feel of the platform.
아래 클래스는 처음부터 파일/디렉토리 창을 만드는 데 사용된다. 이러한 것은 플랫폼의 기본 모양과 느낌을 에뮬레이트하지 않는다.
class tkinter.filedialog.Directory(master=None, **options)
Create a dialog prompting the user to select a directory.
사용자에게 디렉토리를 선택하라는 메시지를 표시하는 대화 상자를 만든다.
Note
The FileDialog class should be subclassed for custom event handling and behaviour.
FileDialog 클래스는 사용자 지정 이벤트 처리 및 동작을 위해 하위 클래스화되어야 한다.
class tkinter.filedialog.FileDialog(master, title=None)
Create a basic file selection dialog.
기본 파일 선택 대화 상자를 만든다.
cancel_command(event=None)
Trigger the termination of the dialog window.
대화 상자 창을 종료한다.
dirs_double_event(event)
Event handler for double-click event on directory.
디렉토리에서 두 번 클릭 이벤트에 대한 이벤트 처리기이다.
dirs_select_event(event)
Event handler for click event on directory.
디렉토리에서 클릭 이벤트에 대한 이벤트 처리기이다.
files_double_event(event)
Event handler for double-click event on file.
파일에서 더블 클릭 이벤트에 대한 이벤트 핸들러.
files_select_event(event)
Event handler for single-click event on file.
파일에서 싱글 클릭 이벤트에 대한 이벤트 핸들러.
filter_command(event=None)
Filter the files by directory.
디렉토리별로 파일을 필터링한다.
get_filter()
Retrieve the file filter currently in use.
현재 사용 중인 파일 필터를 검색한다.
get_selection()
Retrieve the currently selected item.
현재 선택된 항목을 검색한다.
go(dir_or_file=os.curdir, pattern='*', default='', key=None)
Render dialog and start event loop.
대화 상자를 렌더링하고 이벤트 루프를 시작한다.
ok_event(event)
Exit dialog returning current selection.
현재 선택을 반환하는 대화 상자를 종료한다.
quit(how=None)
Exit dialog returning filename, if any.
파일 이름(있는 경우)을 반환하는 대화 상자를 종료한다.
set_filter(dir, pat)
Set the file filter.
파일 필터를 설정한다.
set_selection(file)
Update the current file selection to file.
현재 파일 선택을 file로 업데이트한다.
class tkinter.filedialog.LoadFileDialog(master, title=None)
A subclass of FileDialog that creates a dialog window for selecting an existing file.
기존 파일을 선택하기 위한 대화 상자 창을 만드는 FileDialog의 하위 클래스이다.
ok_command()
Test that a file is provided and that the selection indicates an already existing file.
파일이 제공되고 선택이 이미 존재하는 파일을 나타내는지 테스트한다.
class tkinter.filedialog.SaveFileDialog(master, title=None)
A subclass of FileDialog that creates a dialog window for selecting a destination file.
대상 파일을 선택하기 위한 대화 상자 창을 만드는 FileDialog의 하위 클래스이다.
ok_command()
Test whether or not the selection points to a valid file that is not a directory. Confirmation is required if an already existing file is selected.
선택이 디렉토리가 아닌 유효한 파일을 가리키는지 여부를 테스트한다. 이미 존재하는 파일을 선택한 경우 확인이 필요하다.
tkinter.commondialog — Dialog window templates
The tkinter.commondialog module provides the Dialog class that is the base class for dialogs defined in other supporting modules.
tkinter.commondialog 모듈은 다른 지원 모듈에서 정의된 대화 상자의 기본 클래스인 Dialog 클래스를 제공한다.
class tkinter.commondialog.Dialog(master=None, **options)
show(color=None, **options)
Render the Dialog window.
대화 상자 창을 렌더링한다.
See also
Modules tkinter.messagebox, Reading and Writing Files
모듈 tkinter.messagebox, [파일 읽기 및 쓰기](https://docs.python.org/3/tutorial/inputoutput.html#tut-files)
tkinter.messagebox — Tkinter message prompts
The tkinter.messagebox module provides a template base class as well as a variety of convenience methods for commonly used configurations. The message boxes are modal and will return a subset of (True, False, None, OK, CANCEL, YES, NO) based on the user’s selection. Common message box styles and layouts include but are not limited to:
tkinter.messagebox 모듈은 일반적으로 사용되는 구성에 대한 다양한 편의 메서드와 함께 템플릿 기본 클래스를 제공한다. 메시지 상자는 모달이며 사용자의 선택에 따라 (True, False, None, OK, CANCEL, YES, NO)의 하위 집합을 반환한다. 일반적인 메시지 상자 스타일과 레이아웃은 다음을 포함하지만 이에 국한되지 않는다.
class tkinter.messagebox.Message(master=None, **options)
Create a message window with an application-specified message, an icon and a set of buttons. Each of the buttons in the message window is identified by a unique symbolic name (see the type options).
응용 프로그램에서 지정한 메시지, 아이콘 및 버튼 세트가 있는 메시지 창을 만든다. 메시지 창의 각 버튼은 고유한 기호 이름으로 식별된다(유형 옵션 참조).
The following options are supported:
다음 옵션이 지원된다.
command
Specifies the function to invoke when the user closes the dialog. The name of the button clicked by the user to close the dialog is passed as argument. This is only available on macOS.
사용자가 대화 상자를 닫을 때 호출할 함수를 지정한다. 사용자가 대화 상자를 닫기 위해 클릭한 버튼의 이름이 인수로 전달된다. 이 기능은 macOS에서만 사용할 수 있다.
default
Gives the symbolic name of the default button for this message window (OK, CANCEL, and so on). If this option is not specified, the first button in the dialog will be made the default.
이 메시지 창의 기본 버튼의 상징적 이름을 제공한다(OK, CANCEL 등). 이 옵션을 지정하지 않으면 대화 상자의 첫 번째 버튼이 기본값이 된다.
detail
Specifies an auxiliary message to the main message given by the message option. The message detail will be presented beneath the main message and, where supported by the OS, in a less emphasized font than the main message.
메시지 옵션에서 제공하는 주 메시지에 대한 보조 메시지를 지정한다. 메시지 세부 정보는 주 메시지 아래에 표시되고 OS에서 지원하는 경우 주 메시지보다 덜 강조된 글꼴로 표시된다.
icon
Specifies an icon to display. If this option is not specified, then the INFO icon will be displayed.
표시할 아이콘을 지정한다. 이 옵션을 지정하지 않으면 INFO 아이콘이 표시된다.
message
Specifies the message to display in this message box. The default value is an empty string.
이 메시지 상자에 표시할 메시지를 지정한다. 기본값은 빈 문자열이다.
parent
Makes the specified window the logical parent of the message box. The message box is displayed on top of its parent window.
지정된 창을 메시지 상자의 논리적 부모로 만든다. 메시지 상자는 부모 창 위에 표시된다.
title
Specifies a string to display as the title of the message box. This option is ignored on macOS, where platform guidelines forbid the use of a title on this kind of dialog.
메시지 상자의 제목으로 표시할 문자열을 지정한다. 이 옵션은 macOS에서는 무시되며, 플랫폼 지침에 따라 이런 종류의 대화 상자에서 제목을 사용하는 것이 금지되어 있다.
type
Arranges for a predefined set of buttons to be displayed.
미리 정의된 버튼 집합을 표시하도록 정렬한다.
show(**options)
Display a message window and wait for the user to select one of the buttons. Then return the symbolic name of the selected button. Keyword arguments can override options specified in the constructor.
메시지 창을 표시하고 사용자가 버튼 중 하나를 선택할 때까지 기다린다. 그런 다음 선택한 버튼의 상징적 이름을 반환한다. 키워드 인수는 생성자에 지정된 옵션을 재정의할 수 있다.
Information message box
tkinter.messagebox.showinfo(title=None, message=None, **options)
Creates and displays an information message box with the specified title and message.
지정된 제목과 메시지가 있는 정보 메시지 상자를 만들고 표시한다.
Warning message boxes
tkinter.messagebox.showwarning(title=None, message=None, **options)
Creates and displays a warning message box with the specified title and message.
지정된 제목과 메시지가 있는 경고 메시지 상자를 만들고 표시한다.
tkinter.messagebox.showerror(title=None, message=None, **options)
Creates and displays an error message box with the specified title and message.
지정된 제목과 메시지가 있는 오류 메시지 상자를 만들고 표시한다.
Question message boxes
tkinter.messagebox.askquestion(title=None, message=None, *, type=YESNO, **options)
Ask a question. By default shows buttons YES and NO. Returns the symbolic name of the selected button.
질문을 한다. 기본적으로 YES 및 NO 버튼을 표시한다. 선택한 버튼의 상징적 이름을 반환한다.
tkinter.messagebox.askokcancel(title=None, message=None, **options)
Ask if operation should proceed. Shows buttons OK and CANCEL. Returns True if the answer is ok and False otherwise.
작업을 진행해야 하는지 묻는다. OK 및 CANCEL 버튼을 표시한다. 답변이 ok이면 True를 반환하고 그렇지 않으면 False를 반환한다.
tkinter.messagebox.askretrycancel(title=None, message=None, **options)
Ask if operation should be retried. Shows buttons RETRY and CANCEL. Return True if the answer is yes and False otherwise.
작업을 다시 시도해야 하는지 묻는다. RETRY 및 CANCEL 버튼을 표시한다. 답변이 yes이면 True를 반환하고 그렇지 않으면 False를 반환한다.
tkinter.messagebox.askyesno(title=None, message=None, **options)
Ask a question. Shows buttons YES and NO. Returns True if the answer is yes and False otherwise.
질문을 한다. YES 및 NO 버튼을 표시한다. 답변이 yes이면 True를 반환하고 그렇지 않으면 False를 반환한다.
tkinter.messagebox.askyesnocancel(title=None, message=None, **options)
Ask a question. Shows buttons YES, NO and CANCEL. Return True if the answer is yes, None if cancelled, and False otherwise.
질문을 한다. YES, NO 및 CANCEL 버튼을 표시한다. 답변이 yes이면 True를 반환하고, 취소되면 None을 반환하고, 그렇지 않으면 False를 반환한다.
Symbolic names of buttons:
tkinter.messagebox.ABORT = 'abort'
tkinter.messagebox.RETRY = 'retry'
tkinter.messagebox.IGNORE = 'ignore'
tkinter.messagebox.OK = 'ok'
tkinter.messagebox.CANCEL = 'cancel'
tkinter.messagebox.YES = 'yes'
tkinter.messagebox.NO = 'no'
Predefined sets of buttons:
tkinter.messagebox.ABORTRETRYIGNORE = 'abortretryignore'
Displays three buttons whose symbolic names are ABORT, RETRY and IGNORE.
기호 이름이 ABORT, RETRY 및 IGNORE인 세 개의 버튼을 표시한다.
tkinter.messagebox.OK = 'ok'
Displays one button whose symbolic name is OK.
기호 이름이 OK인 버튼 하나를 표시한다.
tkinter.messagebox.OKCANCEL = 'okcancel'
Displays two buttons whose symbolic names are OK and CANCEL.
상징적 이름이 OK와 CANCEL인 두 개의 버튼을 표시한다.
tkinter.messagebox.RETRYCANCEL = 'retrycancel'
Displays two buttons whose symbolic names are RETRY and CANCEL.
상징적 이름이 RETRY와 CANCEL인 두 개의 버튼을 표시한다.
tkinter.messagebox.YESNO = 'yesno'
Displays two buttons whose symbolic names are YES and NO.
상징적 이름이 YES와 NO인 두 개의 버튼을 표시한다.
tkinter.messagebox.YESNOCANCEL = 'yesnocancel'
Displays three buttons whose symbolic names are YES, NO and CANCEL.
상징적 이름이 YES, NO, CANCEL인 세 개의 버튼을 표시한다.
Icon images:
tkinter.messagebox.ERROR = 'error'
tkinter.messagebox.INFO = 'info'
tkinter.messagebox.QUESTION = 'question'¶
tkinter.messagebox.WARNING = 'warning'
tkinter.scrolledtext — Scrolled Text Widget
The tkinter.scrolledtext module provides a class of the same name which implements a basic text widget which has a vertical scroll bar configured to do the “right thing.” Using the ScrolledText class is a lot easier than setting up a text widget and scroll bar directly.
The text widget and scrollbar are packed together in a Frame, and the methods of the Grid and Pack geometry managers are acquired from the Frame object. This allows the ScrolledText widget to be used directly to achieve most normal geometry management behavior.
Should more specific control be necessary, the following attributes are available:
tkinter.scrolledtext 모듈은 "올바른 작업"을 수행하도록 구성된 수직 스크롤 막대가 있는 기본 텍스트 위젯을 구현하는 동일한 이름의 클래스를 제공한다. ScrolledText 클래스를 사용하는 것은 텍스트 위젯과 스크롤 막대를 직접 설정하는 것보다 훨씬 쉽다.
텍스트 위젯과 스크롤 막대는 Frame에 함께 팩되고 Grid 및 Pack 지오메트리 관리자의 메서드는 Frame 객체에서 가져온다. 이렇게 하면 ScrolledText 위젯을 직접 사용하여 대부분의 일반적인 지오메트리 관리 동작을 구현할 수 있다.
더 구체적인 제어가 필요한 경우 다음 속성을 사용할 수 있다.
class tkinter.scrolledtext.ScrolledText(master=None, **kw)
frame
The frame which surrounds the text and scroll bar widgets.
텍스트와 스크롤 막대 위젯을 둘러싼 프레임이다.
vbar
The scroll bar widget.
스크롤 막대 위젯이다.
tkinter.dnd — Drag and drop support
Note
This is experimental and due to be deprecated when it is replaced with the Tk DND.
이것은 실험적이며 Tk DND로 대체되면 더 이상 사용되지 않는다.
The tkinter.dnd module provides drag-and-drop support for objects within a single application, within the same window or between windows. To enable an object to be dragged, you must create an event binding for it that starts the drag-and-drop process. Typically, you bind a ButtonPress event to a callback function that you write (see Bindings and Events). The function should call dnd_start(), where ‘source’ is the object to be dragged, and ‘event’ is the event that invoked the call (the argument to your callback function).
tkinter.dnd 모듈은 단일 애플리케이션 내부, 동일한 창 내부 또는 창 간의 개체에 대한 드래그 앤 드롭 지원을 제공한다. 객체를 드래그할 수 있도록 하려면 드래그 앤 드롭 프로세스를 시작하는 이벤트 바인딩을 만들어야 한다. 일반적으로 ButtonPress 이벤트를 작성한 콜백 함수에 바인딩한다(바인딩 및 이벤트 참조). 이 함수는 dnd_start()를 호출해야 한다. 여기서 'source'는 드래그할 객체이고 'event'는 호출을 호출한 이벤트(콜백 함수에 대한 인수)이다.
Selection of a target object occurs as follows:
- Top-down search of area under mouse for target widget
- Target widget should have a callable dnd_accept attribute
- If dnd_accept is not present or returns None, search moves to parent widget
- If no target widget is found, then the target object is None
- Call to <told_target>.dnd_leave(source, event)
- Call to <new_target>.dnd_enter(source, event)
- Call to <target>.dnd_commit(source, event) to notify of drop
- Call to <source>.dnd_end(target, event) to signal end of drag-and-drop
대상 객체 선택은 다음과 같이 발생한다.
- 대상 위젯에 대한 마우스 아래 영역의 상향 검색
- 대상 위젯에는 호출 가능한 dnd_accept 속성이 있어야 함
- dnd_accept가 없거나 None을 반환하는 경우 검색은 부모 위젯으로 이동
- 대상 위젯을 찾을 수 없는 경우 대상 객체는 None이다.
- <old_target>.dnd_leave(source, event) 호출
- <new_target>.dnd_enter(source, event) 호출
- <target>.dnd_commit(source, event) 호출하여 놓기 알림
- <source>.dnd_end(target, event) 호출하여 끌어서 놓기 종료 신호
class tkinter.dnd.DndHandler(source, event)
The DndHandler class handles drag-and-drop events tracking Motion and ButtonRelease events on the root of the event widget.
DndHandler 클래스는 이벤트 위젯의 루트에서 Motion 및 ButtonRelease 이벤트를 추적하는 드래그 앤 드롭 이벤트를 처리한다.
cancel(event=None)
Cancel the drag-and-drop process.
드래그 앤 드롭 프로세스를 취소한다.
finish(event, commit=0)
Execute end of drag-and-drop functions.
드래그 앤 드롭 함수의 종료를 실행한다.
on_motion(event)
Inspect area below mouse for target objects while drag is performed.
드래그가 수행되는 동안 마우스 아래 영역에서 대상 객체를 검사한다.
on_release(event)
Signal end of drag when the release pattern is triggered.
릴리스 패턴이 트리거되면 드래그 종료를 알립니다.
tkinter.dnd.dnd_start(source, event)
Factory function for drag-and-drop process.
드래그 앤 드롭 프로세스의 팩토리 함수.
See also
tkinter.ttk — Tk themed widgets
The tkinter.ttk module provides access to the Tk themed widget set, introduced in Tk 8.5. It provides additional benefits including anti-aliased font rendering under X11 and window transparency (requiring a composition window manager on X11).
The basic idea for tkinter.ttk is to separate, to the extent possible, the code implementing a widget’s behavior from the code implementing its appearance.
tkinter.ttk 모듈은 Tk 8.5에서 도입된 Tk 테마 위젯 세트에 대한 액세스를 제공한다. X11에서 앤티 앨리어싱 글꼴 렌더링 및 창 투명성(X11에서 구성 창 관리자 필요)을 포함한 추가 이점을 제공한다.
tkinter.ttk의 기본 아이디어는 위젯의 동작을 구현하는 코드와 모양을 구현하는 코드를 가능한 한 분리하는 것이다.
See also
A document introducing theming support for Tk
Tk에 대한 테마 지원을 소개하는 문서
Using Ttk
To start using Ttk, import its module:
Ttk를 사용하려면 모듈을 가져온다.
from tkinter import ttk
To override the basic Tk widgets, the import should follow the Tk import:
기본 Tk 위젯을 재정의하려면 가져오기가 Tk 가져오기 다음에 나와야 한다.
from tkinter import * from tkinter.ttk import *
That code causes several tkinter.ttk widgets (Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale and Scrollbar) to automatically replace the Tk widgets.
This has the direct benefit of using the new widgets which gives a better look and feel across platforms; however, the replacement widgets are not completely compatible. The main difference is that widget options such as “fg”, “bg” and others related to widget styling are no longer present in Ttk widgets. Instead, use the ttk.Style class for improved styling effects.
해당 코드는 여러 tkinter.ttk 위젯(Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale 및 Scrollbar)이 자동으로 Tk 위젯을 대체하도록 한다.
이는 플랫폼 간에 더 나은 모양과 느낌을 제공하는 새로운 위젯을 사용하는 직접적인 이점이 있지만 대체 위젯은 완전히 호환되지 않는다. 가장 큰 차이점은 "fg", "bg" 및 위젯 스타일링과 관련된 다른 위젯 옵션이 더 이상 Ttk 위젯에 없다는 것이다. 대신 ttk.Style 클래스를 사용하여 스타일링 효과를 개선하라.
See also
Converting existing applications to use Tile widgets
A monograph (using Tcl terminology) about differences typically encountered when moving applications to use the new widgets.
새로운 위젯을 사용하도록 애플리케이션을 이동할 때 일반적으로 발생하는 차이점에 대한 단행본(Tcl 용어 사용).
Ttk Widgets
Ttk comes with 18 widgets, twelve of which already existed in tkinter: Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale, Scrollbar, and Spinbox. The other six are new: Combobox, Notebook, Progressbar, Separator, Sizegrip and Treeview. And all them are subclasses of Widget.
Using the Ttk widgets gives the application an improved look and feel. As discussed above, there are differences in how the styling is coded.
Ttk에는 18개의 위젯이 포함되어 있으며, 그 중 12개는 tkinter에 이미 존재했다. Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale, Scrollbar 및 Spinbox이다. 나머지 6개는 새로운 것이다. Combobox, Notebook, Progressbar, Separator, Sizegrip 및 Treeview이다. 그리고 이 모든 것은 Widget의 하위 클래스이다.
Ttk 위젯을 사용하면 애플리케이션의 모양과 느낌이 개선된다. 위에서 설명한 대로 스타일이 코딩되는 방식에 차이가 있다.
Tk code:
l1 = tkinter.Label(text="Test", fg="black", bg="white") l2 = tkinter.Label(text="Test", fg="black", bg="white")
Ttk code:
style = ttk.Style() style.configure("BW.TLabel", foreground="black", background="white") l1 = ttk.Label(text="Test", style="BW.TLabel") l2 = ttk.Label(text="Test", style="BW.TLabel")
For more information about TtkStyling, see the Style class documentation.
TtkStyling에 대한 자세한 내용은 [Style](https://docs.python.org/3/library/tkinter.ttk.html#tkinter.ttk.Style) 클래스 설명서를 참조하라.
Widget
ttk.Widget defines standard options and methods supported by Tk themed widgets and is not supposed to be directly instantiated.
ttk.Widget은 Tk 테마 위젯에서 지원하는 표준 옵션과 메서드를 정의하며 직접 인스턴스화할 수 없다.
Standard Options
All the ttk Widgets accept the following options:
모든 ttk 위젯은 다음 옵션을 허용한다.
Option Description class Specifies the window class. The class is used when querying the option database for the window’s other options, to determine the default bindtags for the window, and to select the widget’s default layout and style. This option is read-only, and may only be specified when the window is created. cursor Specifies the mouse cursor to be used for the widget. If set to the empty string (the default), the cursor is inherited for the parent widget. takefocus Determines whether the window accepts the focus during keyboard traversal. 0, 1 or an empty string is returned. If 0 is returned, it means that the window should be skipped entirely during keyboard traversal. If 1, it means that the window should receive the input focus as long as it is viewable. And an empty string means that the traversal scripts make the decision about whether or not to focus on the window. style May be used to specify a custom widget style. 옵션 설명 class 창 클래스를 지정한다. 이 클래스는 창의 다른 옵션에 대한 옵션 데이터베이스를 쿼리하고, 창의 기본 바인드 태그를 결정하고, 위젯의 기본 레이아웃과 스타일을 선택할 때 사용된다. 이 옵션은 읽기 전용이며, 창을 만들 때만 지정할 수 있다. cursor 위젯에 사용할 마우스 커서를 지정한다. 빈 문자열(기본값)로 설정하면 커서가 부모 위젯에 상속된다. takefocus 키보드 탐색 중에 창이 포커스를 받는지 여부를 결정한다. 0, 1 또는 빈 문자열이 반환된다. 0이 반환되면 키보드 탐색 중에 창을 완전히 건너뛰어야 함을 의미한다. 1이면 창이 보이는 한 입력 포커스를 받아야 함을 의미한다. 빈 문자열은 탐색 스크립트가 창에 포커스를 맞출지 여부를 결정함을 의미한다. style 사용자 지정 위젯 스타일을 지정하는 데 사용할 수 있다. Scrollable Widget Options
The following options are supported by widgets that are controlled by a scrollbar.
다음 옵션은 스크롤바로 제어되는 위젯에서 지원된다.
Option Description xscrollcommand Used to communicate with horizontal scrollbars.
When the view in the widget’s window change, the widget will generate a Tcl command based on the scrollcommand.
Usually this option consists of the method Scrollbar.set() of some scrollbar. This will cause the scrollbar to be updated whenever the view in the window changes.yscrollcommand Used to communicate with vertical scrollbars. For some more information, see above. |옵션|설명|
|:-|:-|
|xscrollcommand|수평 스크롤바와 통신하는 데 사용된다.
위젯 창의 뷰가 변경되면 위젯은 scrollcommand를 기반으로 Tcl 명령을 생성한다.
일반적으로 이 옵션은 일부 스크롤바의 Scrollbar.set() 메서드로 구성된다. 이렇게 하면 창의 뷰가 변경될 때마다 스크롤바가 업데이트된다.||yscrollcommand|수직 스크롤바와 통신하는 데 사용된다. 자세한 내용은 위를 참조하라.|
Label Options
The following options are supported by labels, buttons and other button-like widgets.
Option Description text Specifies a text string to be displayed inside the widget. textvariable Specifies a name whose value will be used in place of the text option resource. underline If set, specifies the index (0-based) of a character to underline in the text string. The underline character is used for mnemonic activation. image Specifies an image to display. This is a list of 1 or more elements. The first element is the default image name. The rest of the list if a sequence of statespec/value pairs as defined by Style.map(), specifying different images to use when the widget is in a particular state or a combination of states. All images in the list should have the same size. compound Specifies how to display the image relative to the text, in the case both text and images options are present. Valid values are:
- text: display text only
- image: display image only
- top, bottom, left, right: display image above, below, left of, or right of the text, respectively.
- none: the default. display the image if present, otherwise the text.
width If greater than zero, specifies how much space, in character widths, to allocate for the text label, if less than zero, specifies a minimum width. If zero or unspecified, the natural width of the text label is used. 다음 옵션은 레이블, 버튼 및 기타 버튼과 같은 위젯에서 지원된다.
옵션 설명 text 위젯 내부에 표시할 텍스트 문자열을 지정한다. textvariable 텍스트 옵션 리소스 대신 사용할 값을 가진 이름을 지정한다. underline 설정된 경우 텍스트 문자열에서 밑줄을 긋는 문자의 인덱스(0부터 시작)를 지정한다. 밑줄 문자는 니모닉 활성화에 사용된다. image 표시할 이미지를 지정한다. 이는 1개 이상의 요소 목록이다. 첫 번째 요소는 기본 이미지 이름이다. 목록의 나머지 부분은 Style.map()에서 정의한 statespec/value 쌍의 시퀀스로, 위젯이 특정 상태 또는 상태 조합에 있을 때 사용할 다른 이미지를 지정한다. 목록의 모든 이미지는 크기가 동일해야 한다. compound text 및 images 옵션이 모두 있는 경우 텍스트에 상대적으로 이미지를 표시하는 방법을 지정한다. 유효한 값은 다음과 같다. - text: 텍스트만 표시
- image: 이미지만 표시
- top, bottom, left, right: 각각 텍스트 위, 아래, 왼쪽 또는 오른쪽에 이미지를 표시한다.
- none: 기본값이다. 이미지가 있으면 표시하고, 그렇지 않으면 텍스트를 표시한다.
width 0보다 큰 경우 텍스트 레이블에 할당할 문자 너비의 공간을 지정한다. 0보다 작은 경우 최소 너비를 지정한다. 0이거나 지정하지 않으면 텍스트 레이블의 자연스러운 너비가 사용된다. Compatibility Options
Option Description state May be set to “normal” or “disabled” to control the “disabled” state bit. This is a write-only option: setting it changes the widget state, but the Widget.state() method does not affect this option. 옵션 설명 state "비활성화" 상태 비트를 제어하기 위해 "normal" 또는 "disabled"로 설정할 수 있다. 이것은 쓰기 전용 옵션이다. 이 옵션을 설정하면 위젯 상태가 변경되지만 Widget.state() 메서드는 이 옵션에 영향을 미치지 않는다. Widget States
The widget state is a bitmap of independent state flags.
위젯 상태는 독립 상태 플래그의 비트맵이다.
Flag Description active The mouse cursor is over the widget and pressing a mouse button will cause some action to occur disabled Widget is disabled under program control focus Widget has keyboard focus pressed Widget is being pressed selected “On”, “true”, or “current” for things like Checkbuttons and radiobuttons background Windows and Mac have a notion of an “active” or foreground window. The background state is set for widgets in a background window, and cleared for those in the foreground window readonly Widget should not allow user modification alternate A widget-specific alternate display format invalid The widget’s value is invalid 플래그 설명 active 마우스 커서가 위젯 위에 있고 마우스 버튼을 누르면 어떤 동작이 발생한다. disabled 위젯이 프로그램 제어 하에서 비활성화됨 focus 위젯에 키보드 포커스가 있음 pressed 위젯이 눌림 selected Checkbuttons 및 radiobuttons와 같은 항목에 대해 "On", "true" 또는 "current" background Windows 및 Mac에는 "활성" 또는 전경 창이라는 개념이 있다. 배경 상태는 배경 창의 위젯에 대해 설정되고 전경 창의 위젯에 대해 지워진다. readonly 위젯은 사용자 수정을 허용해서는 안 됨 alternate 위젯별 대체 표시 형식 invalid 위젯의 값이 유효하지 않음 A state specification is a sequence of state names, optionally prefixed with an exclamation point indicating that the bit is off.
상태 사양은 상태 이름의 시퀀스이며, 선택적으로 비트가 꺼져 있음을 나타내는 느낌표가 접두사로 붙는다.
ttk.Widget
Besides the methods described below, the ttk.Widget supports the methods tkinter.Widget.cget() and tkinter.Widget.configure().
아래 설명된 메서드 외에도 ttk.Widget은 tkinter.Widget.cget() 및 tkinter.Widget.configure() 메서드를 지원한다.
class tkinter.ttk.Widget
identify(x, y)
Returns the name of the element at position x y, or the empty string if the point does not lie within any element.
x and y are pixel coordinates relative to the widget.
x y 위치에 있는 요소의 이름을 반환하거나, 해당 지점이 어떤 요소 내에도 없으면 빈 문자열을 반환한다.
x와 y는 위젯을 기준으로 한 픽셀 좌표이다.
instate(statespec, callback=None, *args, **kw)
Test the widget’s state. If a callback is not specified, returns True if the widget state matches statespec and False otherwise. If callback is specified then it is called with args if widget state matches statespec.
위젯의 상태를 테스트한다. 콜백이 지정되지 않은 경우 위젯 상태가 statespec과 일치하면 True를 반환하고 그렇지 않으면 False를 반환한다. 콜백이 지정된 경우 위젯 상태가 statespec과 일치하면 args와 함께 호출된다.
state(statespec=None)
Modify or inquire widget state. If statespec is specified, sets the widget state according to it and return a new statespec indicating which flags were changed. If statespec is not specified, returns the currently enabled state flags.
위젯 상태를 수정하거나 조회한다. statespec이 지정된 경우, 해당 statespec에 따라 위젯 상태를 설정하고 변경된 플래그를 나타내는 새 statespec을 반환한다. statespec이 지정되지 않은 경우, 현재 활성화된 상태 플래그를 반환한다.
statespec will usually be a list or a tuple.
statespec은 일반적으로 목록 또는 튜플이다.
Combobox
The ttk.Combobox widget combines a text field with a pop-down list of values. This widget is a subclass of Entry.
Besides the methods inherited from Widget: Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() and Widget.state(), and the following inherited from Entry: Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.selection(), Entry.xview(), it has some other methods, described at ttk.Combobox.
ttk.Combobox 위젯은 텍스트 필드와 값의 팝업 목록을 결합한다. 이 위젯은 Entry의 하위 클래스이다.
Widget에서 상속된 메서드 외에 Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() 및 Widget.state(), Entry에서 상속된 메서드 외에 Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.selection(), Entry.xview(), ttk.Combobox에서 설명하는 다른 메서드도 있다.
Options
This widget accepts the following specific options:
이 위젯은 다음과 같은 특정 옵션을 허용한다.
Option Description exportselection Boolean value. If set, the widget selection is linked to the Window Manager selection (which can be returned by invoking Misc.selection_get, for example). justify Specifies how the text is aligned within the widget. One of “left”, “center”, or “right”. height Specifies the height of the pop-down listbox, in rows. postcommand A script (possibly registered with Misc.register) that is called immediately before displaying the values. It may specify which values to display. state One of “normal”, “readonly”, or “disabled”. In the “readonly” state, the value may not be edited directly, and the user can only selection of the values from the dropdown list. In the “normal” state, the text field is directly editable. In the “disabled” state, no interaction is possible. textvariable Specifies a name whose value is linked to the widget value. Whenever the value associated with that name changes, the widget value is updated, and vice versa. See tkinter.StringVar. values Specifies the list of values to display in the drop-down listbox. width Specifies an integer value indicating the desired width of the entry window, in average-size characters of the widget’s font. 옵션 설명 exportselection 부울 값이다. 설정된 경우 위젯 선택은 창 관리자 선택에 연결된다(예: Misc.selection_get을 호출하여 반환할 수 있음). justify 위젯 내에서 텍스트가 정렬되는 방식을 지정한다. "left", "center" 또는 "right" 중 하나이다. height 팝업 목록 상자의 높이를 행 단위로 지정한다. postcommand 값을 표시하기 직전에 호출되는 스크립트(Misc.register로 등록될 수 있음). 표시할 값을 지정할 수 있다. state "normal", "readonly" 또는 "disabled" 중 하나이다. "readonly" 상태에서는 값을 직접 편집할 수 없으며 사용자는 드롭다운 목록에서 값을 선택할 수만 있다. "normal" 상태에서는 텍스트 필드를 직접 편집할 수 있다. "disabled" 상태에서는 상호 작용이 불가능하다. textvariable 값이 위젯 값에 연결된 이름을 지정한다. 해당 이름과 연결된 값이 변경될 때마다 위젯 값이 업데이트되고 그 반대의 경우도 마찬가지이다. tkinter.StringVar를 참조하라. values 드롭다운 목록 상자에 표시할 값 목록을 지정한다. width 위젯 글꼴의 평균 크기 문자로 입력 창의 원하는 너비를 나타내는 정수 값을 지정한다. Virtual events
The combobox widgets generates a <<ComboboxSelected>> virtual event when the user selects an element from the list of values.
콤보박스 위젯은 사용자가 값 목록에서 요소를 선택하면 <<ComboboxSelected>> 가상 이벤트를 생성한다.
ttk.Combobox
class tkinter.ttk.Combobox
current(newindex=None)
If newindex is specified, sets the combobox value to the element position newindex. Otherwise, returns the index of the current value or -1 if the current value is not in the values list.
newindex가 지정된 경우, 콤보박스 값을 요소 위치 newindex로 설정한다. 그렇지 않으면 현재 값의 인덱스를 반환하거나, 현재 값이 값 목록에 없는 경우 -1을 반환한다.
get()
Returns the current value of the combobox.
콤보박스의 현재 값을 반환한다.
set(value)
Sets the value of the combobox to value.
콤보박스의 값을 value로 설정한다.
Spinbox
The ttk.Spinbox widget is a ttk.Entry enhanced with increment and decrement arrows. It can be used for numbers or lists of string values. This widget is a subclass of Entry.
Besides the methods inherited from Widget: Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() and Widget.state(), and the following inherited from Entry: Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.xview(), it has some other methods, described at ttk.Spinbox.
ttk.Spinbox 위젯은 증가 및 감소 화살표가 향상된 ttk.Entry이다. 숫자나 문자열 값 목록에 사용할 수 있다. 이 위젯은 Entry의 하위 클래스이다.
Widget에서 상속받은 메서드(Widget.cget(), Widget.configure(), Widget.identify(), Widget.instate() 및 Widget.state())와 Entry에서 상속받은 메서드(Entry.bbox(), Entry.delete(), Entry.icursor(), Entry.index(), Entry.insert(), Entry.xview()) 외에도 ttk.Spinbox에서 설명하는 다른 메서드가 있다.
Options
This widget accepts the following specific options:
이 위젯은 다음과 같은 특정 옵션을 허용한다.
Option Description from Float value. If set, this is the minimum value to which the decrement button will decrement. Must be spelled as from_ when used as an argument, since from is a Python keyword. to Float value. If set, this is the maximum value to which the increment button will increment. increment Float value. Specifies the amount which the increment/decrement buttons change the value. Defaults to 1.0. values Sequence of string or float values. If specified, the increment/decrement buttons will cycle through the items in this sequence rather than incrementing or decrementing numbers. wrap Boolean value. If True, increment and decrement buttons will cycle from the to value to the from value or the from value to the to value, respectively. format String value. This specifies the format of numbers set by the increment/decrement buttons. It must be in the form “%W.Pf”, where W is the padded width of the value, P is the precision, and ‘%’ and ‘f’ are literal. command Python callable. Will be called with no arguments whenever either of the increment or decrement buttons are pressed. 옵션 설명 from 부동 소수점 값이다. 설정된 경우 감소 버튼이 감소하는 최소값이다. 인수로 사용할 때는 from_으로 철자해야 한다. from은 Python 키워드이기 때문이다. to Float 값. 설정된 경우 증가 버튼이 증가할 최대 값이다. increment Float 값. 증가/감소 버튼이 값을 변경하는 양을 지정한다. 기본값은 1.0이다. values 문자열 또는 float 값의 시퀀스이다. 지정된 경우 증가/감소 버튼은 숫자를 증가 또는 감소시키는 대신 이 시퀀스의 항목을 순환한다. wrap 부울 값이다. True인 경우 증가 및 감소 버튼은 각각 to 값에서 from 값으로 또는 from 값에서 to 값으로 순환한다. format 문자열 값이다. 이것은 증가/감소 버튼으로 설정된 숫자의 형식을 지정한다. "%W.Pf" 형식이어야 하며, 여기서 W는 값의 패딩된 너비이고, P는 정밀도이며, '%'와 'f'는 리터럴이다. command Python 호출 가능. 증가 또는 감소 버튼을 누를 때마다 인수 없이 호출된다. Virtual events
The spinbox widget generates an <<Increment>> virtual event when the user presses <Up>, and a <<Decrement>> virtual event when the user presses <Down>.
스핀박스 위젯은 사용자가 <Up>를 누르면 <<Increment>> 가상 이벤트를 생성하고, 사용자가 <Down>를 누르면 <<Decrement>> 가상 이벤트를 생성한다.
ttk.Spinbox
class tkinter.ttk.Spinbox
get()
Returns the current value of the spinbox.
스핀박스의 현재 값을 반환한다.
set(value)
Sets the value of the spinbox to value.
스핀박스의 값을 value로 설정한다.
Notebook
Ttk Notebook widget manages a collection of windows and displays a single one at a time. Each child window is associated with a tab, which the user may select to change the currently displayed window.
Ttk 노트북 위젯은 창 모음을 관리하고 한 번에 하나씩 표시한다. 각 자식 창은 탭과 연결되어 있으며, 사용자는 현재 표시된 창을 변경하기 위해 선택할 수 있다.
Options
This widget accepts the following specific options:
이 위젯은 다음과 같은 특정 옵션을 허용한다.
Option Description height If present and greater than zero, specifies the desired height of the pane area (not including internal padding or tabs). Otherwise, the maximum height of all panes is used. padding Specifies the amount of extra space to add around the outside of the notebook. The padding is a list up to four length specifications left top right bottom. If fewer than four elements are specified, bottom defaults to top, right defaults to left, and top defaults to left. width If present and greater than zero, specified the desired width of the pane area (not including internal padding). Otherwise, the maximum width of all panes is used. 옵션 설명 height 존재하고 0보다 큰 경우, 원하는 창 영역 높이(내부 패딩 또는 탭 제외)를 지정한다. 그렇지 않으면 모든 창의 최대 높이가 사용된다. padding 노트북 외부 주변에 추가할 여분 공간의 양을 지정한다. 패딩은 최대 4개의 길이 지정 목록이다. left top right bottom. 지정된 요소가 4개 미만인 경우, bottom은 기본적으로 top, right는 기본적으로 left, top은 기본적으로 left이다. width 존재하고 0보다 큰 경우, 원하는 창 영역 너비(내부 패딩 제외)를 지정한다. 그렇지 않으면 모든 창의 최대 너비가 사용된다. Tab Options
There are also specific options for tabs:
탭에 대한 특정 옵션도 있다.
Option Description state Either “normal”, “disabled” or “hidden”. If “disabled”, then the tab is not selectable. If “hidden”, then the tab is not shown. sticky Specifies how the child window is positioned within the pane area. Value is a string containing zero or more of the characters “n”, “s”, “e” or “w”. Each letter refers to a side (north, south, east or west) that the child window will stick to, as per the grid() geometry manager. padding Specifies the amount of extra space to add between the notebook and this pane. Syntax is the same as for the option padding used by this widget. text Specifies a text to be displayed in the tab. image Specifies an image to display in the tab. See the option image described in Widget. compound Specifies how to display the image relative to the text, in the case both options text and image are present. See Label Options for legal values. underline Specifies the index (0-based) of a character to underline in the text string. The underlined character is used for mnemonic activation if Notebook.enable_traversal() is called. 옵션 설명 state "normal", "disabled" 또는 "hidden". "disabled"인 경우, 탭을 선택할 수 없다. "숨김"인 경우 탭이 표시되지 않는다. sticky 창 영역 내에서 자식 창이 배치되는 방식을 지정한다. 값은 "n", "s", "e" 또는 "w" 문자 중 0개 이상이 포함된 문자열이다. 각 문자는 grid() 지오메트리 관리자에 따라 자식 창이 고정되는 면(북쪽, 남쪽, 동쪽 또는 서쪽)을 나타낸다. padding 노트북과 이 창 사이에 추가할 여분 공간의 양을 지정한다. 구문은 이 위젯에서 사용하는 padding 옵션과 동일하다. text 탭에 표시할 텍스트를 지정한다. image 탭에 표시할 이미지를 지정한다. 위젯에서 설명한 image 옵션을 참조하라. compound text와 image 옵션이 모두 있는 경우 텍스트에 상대적으로 이미지를 표시하는 방법을 지정한다. 유효한 값은 레이블 옵션을 참조하라. underline 텍스트 문자열에서 밑줄을 긋는 문자의 인덱스(0부터 시작)를 지정한다. 밑줄이 그어진 문자는 Notebook.enable_traversal()이 호출되는 경우 니모닉 활성화에 사용된다. Tab Identifiers
The tab_id present in several methods of ttk.Notebook may take any of the following forms:
- An integer between zero and the number of tabs
- The name of a child window
- A positional specification of the form “@x,y”, which identifies the tab
- The literal string “current”, which identifies the currently selected tab
- The literal string “end”, which returns the number of tabs (only valid for Notebook.index())
ttk.Notebook의 여러 메서드에 있는 tab_id는 다음 형식 중 하나를 취할 수 있다.
- 0과 탭 수 사이의 정수
- 자식 창의 이름
- 탭을 식별하는 "@x,y" 형식의 위치 지정
- 현재 선택된 탭을 식별하는 리터럴 문자열 "current"
- 탭 수를 반환하는 리터럴 문자열 "end" (Notebook.index()에만 유효)
Virtual Events
This widget generates a <<NotebookTabChanged>> virtual event after a new tab is selected.
이 위젯은 새 탭이 선택된 후 <<NotebookTabChanged>> 가상 이벤트를 생성한다.
ttk.Notebook
class tkinter.ttk.Notebook
add(child, **kw)
Adds a new tab to the notebook.
If window is currently managed by the notebook but hidden, it is restored to its previous position.
See Tab Options for the list of available options.
노트북에 새 탭을 추가한다.
현재 노트북에서 창을 관리하지만 숨겨져 있는 경우 이전 위치로 복원된다.
사용 가능한 옵션 목록은 탭 옵션을 참조하라.
forget(tab_id)
Removes the tab specified by tab_id, unmaps and unmanages the associated window.
tab_id로 지정된 탭을 제거하고, 연관된 창을 매핑 해제하고 관리 해제한다.
hide(tab_id)
Hides the tab specified by tab_id.
The tab will not be displayed, but the associated window remains managed by the notebook and its configuration remembered. Hidden tabs may be restored with the add() command.
tab_id로 지정된 탭을 숨긴다.
탭은 표시되지 않지만 연관된 창은 노트북에서 관리되고 해당 구성은 기억된다. 숨겨진 탭은 add() 명령으로 복원할 수 있다.
identify(x, y)
Returns the name of the tab element at position x, y, or the empty string if none.
x, y 위치에 있는 탭 요소의 이름을 반환하거나, 없으면 빈 문자열을 반환한다.
index(tab_id)
Returns the numeric index of the tab specified by tab_id, or the total number of tabs if tab_id is the string “end”.
tab_id로 지정된 탭의 숫자 인덱스를 반환하거나, tab_id가 문자열 "end"인 경우 탭의 총 개수를 반환한다.
insert(pos, child, **kw)
Inserts a pane at the specified position.
pos is either the string “end”, an integer index, or the name of a managed child. If child is already managed by the notebook, moves it to the specified position.
See Tab Options for the list of available options.
지정된 위치에 창을 삽입한다.
pos는 문자열 "end", 정수 인덱스 또는 관리되는 자식의 이름이다. child가 이미 노트북에서 관리되는 경우 지정된 위치로 이동한다.
사용 가능한 옵션 목록은 탭 옵션을 참조하라.
select(tab_id=None)
Selects the specified tab_id.
The associated child window will be displayed, and the previously selected window (if different) is unmapped. If tab_id is omitted, returns the widget name of the currently selected pane.
지정된 tab_id를 선택한다.
연관된 자식 창이 표시되고 이전에 선택한 창(다른 경우)은 매핑 해제된다. tab_id가 생략되면 현재 선택된 창의 위젯 이름을 반환한다.
tab(tab_id, option=None, **kw)
Query or modify the options of the specific tab_id.
If kw is not given, returns a dictionary of the tab option values. If option is specified, returns the value of that option. Otherwise, sets the options to the corresponding values.
특정 tab_id의 옵션을 쿼리하거나 수정한다.
kw가 지정되지 않으면 탭 옵션 값의 사전을 반환한다. option이 지정되면 해당 옵션의 값을 반환한다. 그렇지 않으면 옵션을 해당 값으로 설정한다.
tabs()
Returns a list of windows managed by the notebook.
노트북에서 관리하는 창 목록을 반환한다.
enable_traversal()
Enable keyboard traversal for a toplevel window containing this notebook.
이 노트북이 포함된 최상위 창에 대한 키보드 트래버설을 활성화한다.
This will extend the bindings for the toplevel window containing the notebook as follows:
- Control-Tab: selects the tab following the currently selected one.
- Shift-Control-Tab: selects the tab preceding the currently selected one.
- Alt-K: where K is the mnemonic (underlined) character of any tab, will select that tab.
이렇게 하면 노트북이 포함된 최상위 창에 대한 바인딩이 다음과 같이 확장된다.
- Control-Tab: 현재 선택된 탭 다음 탭을 선택한다.
- Shift-Control-Tab: 현재 선택된 탭 앞의 탭을 선택한다.
- Alt-K: K는 탭의 니모닉(밑줄) 문자이며 해당 탭을 선택한다.
Multiple notebooks in a single toplevel may be enabled for traversal, including nested notebooks. However, notebook traversal only works properly if all panes have the notebook they are in as master.
중첩된 노트북을 포함하여 단일 최상위의 여러 노트북을 트래버설에 활성화할 수 있다. 그러나 노트북 트래버설은 모든 창에 마스터로 있는 노트북이 있는 경우에만 제대로 작동한다.
Progressbar
The ttk.Progressbar widget shows the status of a long-running operation. It can operate in two modes: 1) the determinate mode which shows the amount completed relative to the total amount of work to be done and 2) the indeterminate mode which provides an animated display to let the user know that work is progressing.
ttk.Progressbar 위젯은 장기 실행 작업의 상태를 표시한다. 두 가지 모드로 작동할 수 있다. 1) 완료한 작업량을 총 작업량에 대한 비율로 표시하는 확정 모드, 2) 작업이 진행 중임을 사용자에게 알리는 애니메이션 디스플레이를 제공하는 불확정 모드.
Options
This widget accepts the following specific options:
이 위젯은 다음과 같은 특정 옵션을 허용한다.
Option Description orient One of “horizontal” or “vertical”. Specifies the orientation of the progress bar. length Specifies the length of the long axis of the progress bar (width if horizontal, height if vertical). mode One of “determinate” or “indeterminate”. maximum A number specifying the maximum value. Defaults to 100. value The current value of the progress bar. In “determinate” mode, this represents the amount of work completed. In “indeterminate” mode, it is interpreted as modulo maximum; that is, the progress bar completes one “cycle” when its value increases by maximum. variable A name which is linked to the option value. If specified, the value of the progress bar is automatically set to the value of this name whenever the latter is modified. phase Read-only option. The widget periodically increments the value of this option whenever its value is greater than 0 and, in determinate mode, less than maximum. This option may be used by the current theme to provide additional animation effects. 옵션 설명 orient "horizontal" 또는 "vertical" 중 하나이다. 진행률 표시줄의 방향을 지정한다. length 진행률 표시줄의 장축 길이를 지정한다(가로인 경우 너비, 세로인 경우 높이). mode "determinate" 또는 "indeterminate" 중 하나이다. maximum 최대값을 지정하는 숫자이다. 기본값은 100이다. value 진행률 표시줄의 현재 값이다. "determinate" 모드에서는 완료된 작업량을 나타낸다. "불확정" 모드에서는 모듈로 최대로 해석된다. 즉, 진행률 막대는 값이 최대값만큼 증가할 때 한 "주기"를 완료한다. variable 옵션 값에 연결된 이름이다. 지정된 경우 진행률 막대의 값은 후자가 수정될 때마다 이 이름의 값으로 자동 설정된다. phase 읽기 전용 옵션이다. 위젯은 값이 0보다 크고 결정 모드에서 최대값보다 작을 때마다 이 옵션의 값을 주기적으로 증가시킨다. 이 옵션은 현재 테마에서 추가 애니메이션 효과를 제공하는 데 사용될 수 있다. ttk.Progressbar
class tkinter.ttk.Progressbar
start(interval=None)
Begin autoincrement mode: schedules a recurring timer event that calls Progressbar.step() every interval milliseconds. If omitted, interval defaults to 50 milliseconds.
자동 증가 모드 시작: interval 밀리초마다 Progressbar.step()를 호출하는 반복 타이머 이벤트를 예약한다. 생략하면 interval은 기본적으로 50밀리초로 설정된다.
step(amount=None)
Increments the progress bar’s value by amount.
amount defaults to 1.0 if omitted.
진행률 막대의 값을 amount만큼 증가시킨다.
amount는 생략하면 기본적으로 1.0으로 설정된다.
stop()
Stop autoincrement mode: cancels any recurring timer event initiated by Progressbar.start() for this progress bar.
자동 증가 모드 중지: 이 진행률 막대에 대해 Progressbar.start()에서 시작된 모든 반복 타이머 이벤트를 취소한다.
Separator
The ttk.Separator widget displays a horizontal or vertical separator bar.
It has no other methods besides the ones inherited from ttk.Widget.
ttk.Separator 위젯은 가로 또는 세로 구분 막대를 표시한다.
ttk.Widget에서 상속된 것 외에 다른 메서드는 없다.
Options
This widget accepts the following specific option:
이 위젯은 다음과 같은 특정 옵션을 허용한다.
Option Description orient One of “horizontal” or “vertical”. Specifies the orientation of the separator. 옵션 설명 orient "horizontal" 또는 "vertical" 중 하나이다. 구분 기호의 방향을 지정한다. Sizegrip
The ttk.Sizegrip widget (also known as a grow box) allows the user to resize the containing toplevel window by pressing and dragging the grip.
This widget has neither specific options nor specific methods, besides the ones inherited from ttk.Widget.
ttk.Sizegrip 위젯(grow box라고도 함)을 사용하면 사용자가 그립을 누르고 끌어서 포함된 최상위 창의 크기를 조정할 수 있다.
이 위젯에는 ttk.Widget에서 상속된 것 외에는 특정 옵션이나 특정 메서드가 없다.
Platform-specific notes
On macOS, toplevel windows automatically include a built-in size grip by default. Adding a Sizegrip is harmless, since the built-in grip will just mask the widget.
macOS에서 최상위 창에는 기본적으로 내장된 크기 그립이 자동으로 포함된다. 내장된 그립이 위젯을 마스크하기만 하므로 Sizegrip을 추가해도 무해하다.
Bugs
- If the containing toplevel’s position was specified relative to the right or bottom of the screen (e.g. ….), the Sizegrip widget will not resize the window.
- This widget supports only “southeast” resizing.
- 포함하는 최상위 창의 위치가 화면의 오른쪽이나 아래쪽을 기준으로 지정된 경우(예: ….) Sizegrip 위젯은 창의 크기를 조정하지 않는다.
- 이 위젯은 "남동쪽" 크기 조정만 지원한다.
Treeview
The ttk.Treeview widget displays a hierarchical collection of items. Each item has a textual label, an optional image, and an optional list of data values. The data values are displayed in successive columns after the tree label.
The order in which data values are displayed may be controlled by setting the widget option displaycolumns. The tree widget can also display column headings. Columns may be accessed by number or symbolic names listed in the widget option columns. See Column Identifiers.
Each item is identified by a unique name. The widget will generate item IDs if they are not supplied by the caller. There is a distinguished root item, named {}. The root item itself is not displayed; its children appear at the top level of the hierarchy.
Each item also has a list of tags, which can be used to associate event bindings with individual items and control the appearance of the item.
The Treeview widget supports horizontal and vertical scrolling, according to the options described in Scrollable Widget Options and the methods Treeview.xview() and Treeview.yview().
ttk.Treeview 위젯은 항목의 계층적 컬렉션을 표시한다. 각 항목에는 텍스트 레이블, 선택적 이미지 및 선택적 데이터 값 목록이 있다. 데이터 값은 트리 레이블 뒤의 연속된 열에 표시된다.
데이터 값이 표시되는 순서는 위젯 옵션 displaycolumns를 설정하여 제어할 수 있다. 트리 위젯은 열 머리글도 표시할 수 있다. 열은 위젯 옵션 열에 나열된 숫자 또는 기호 이름으로 액세스할 수 있다. 열 식별자를 참조하라.
각 항목은 고유한 이름으로 식별된다. 호출자가 제공하지 않으면 위젯은 항목 ID를 생성한다. {}라는 고유한 루트 항목이 있다. 루트 항목 자체는 표시되지 않으며, 자식은 계층 구조의 최상위에 나타난다.
각 항목에는 태그 목록도 있으며, 이를 사용하여 이벤트 바인딩을 개별 항목과 연결하고 항목의 모양을 제어할 수 있다.
트리뷰 위젯은 스크롤 가능 위젯 옵션과 Treeview.xview() 및 Treeview.yview() 메서드에 설명된 옵션에 따라 가로 및 세로 스크롤을 지원한다.
Options
This widget accepts the following specific options:
이 위젯은 다음과 같은 특정 옵션을 허용한다.
Option Description columns A list of column identifiers, specifying the number of columns and their names. displaycolumns A list of column identifiers (either symbolic or integer indices) specifying which data columns are displayed and the order in which they appear, or the string “#all”. height Specifies the number of rows which should be visible. Note: the requested width is determined from the sum of the column widths. padding Specifies the internal padding for the widget. The padding is a list of up to four length specifications. selectmode Controls how the built-in class bindings manage the selection. One of “extended”, “browse” or “none”. If set to “extended” (the default), multiple items may be selected. If “browse”, only a single item will be selected at a time. If “none”, the selection will not be changed.
Note that the application code and tag bindings can set the selection however they wish, regardless of the value of this option.show A list containing zero or more of the following values, specifying which elements of the tree to display.
- tree: display tree labels in column #0.
- headings: display the heading row.
Note: Column #0 always refers to the tree column, even if show=”tree” is not specified.옵션 설명 columns 열 식별자 목록으로, 열 수와 이름을 지정한다. displaycolumns 열 식별자 목록(기호 또는 정수 인덱스)으로, 표시할 데이터 열과 나타나는 순서를 지정하거나 문자열 "#all"을 지정한다. height 표시해야 하는 행 수를 지정한다. 참고: 요청된 너비는 열 너비의 합계에서 결정된다. padding 위젯의 내부 패딩을 지정한다. 패딩은 최대 4개의 길이 사양 목록이다. selectmode 기본 제공 클래스 바인딩이 선택을 관리하는 방식을 제어한다. "extended", "browse" 또는 "none" 중 하나이다. "extended"(기본값)로 설정하면 여러 항목을 선택할 수 있다. "browse"인 경우 한 번에 하나의 항목만 선택된다. "none"인 경우 선택이 변경되지 않는다.애플리케이션 코드와 태그 바인딩은 이 옵션의 값에 관계없이 원하는 대로 선택 항목을 설정할 수 있다. show 다음 값 중 0개 이상을 포함하는 목록으로, 표시할 트리의 요소를 지정한다. - tree: 열 #0에 트리 레이블을 표시한다.
- headings: 제목 행을 표시한다.
참고: show="tree"가 지정되지 않은 경우에도 열 #0은 항상 트리 열을 참조.Item Options
The following item options may be specified for items in the insert and item widget commands.
다음 항목 옵션은 insert 및 item widget 명령의 항목에 대해 지정할 수 있다.
Option Description text The textual label to display for the item. image A Tk Image, displayed to the left of the label. values The list of values associated with the item.Each item should have the same number of values as the widget option columns. If there are fewer values than columns, the remaining values are assumed empty. If there are more values than columns, the extra values are ignored. open True/False value indicating whether the item’s children should be displayed or hidden. tags A list of tags associated with this item. 옵션 설명 text 항목에 표시할 텍스트 레이블. image 레이블 왼쪽에 표시되는 Tk 이미지. values 항목과 연결된 값 목록이다.각 항목은 위젯 옵션 열과 같은 수의 값을 가져야 한다. 열보다 값이 적으면 나머지 값은 비어 있는 것으로 간주된다. 열보다 값이 많으면 추가 값은 무시된다. open 항목의 자식을 표시할지 숨길지 여부를 나타내는 True/False 값. tags 이 항목과 관련된 태그 목록. Tag Options
The following options may be specified on tags:
다음 옵션을 태그에 지정할 수 있다.
Option Description foreground Specifies the text foreground color. background Specifies the cell or item background color. font Specifies the font to use when drawing text. image Specifies the item image, in case the item’s image option is empty. 옵션 설명 foreground 텍스트 전경색을 지정한다. background 셀 또는 항목 배경색을 지정한다. font 텍스트를 그릴 때 사용할 글꼴을 지정한다. image 항목의 이미지 옵션이 비어 있는 경우 항목 이미지를 지정한다. Column Identifiers
Column identifiers take any of the following forms:
- A symbolic name from the list of columns option.
- An integer n, specifying the nth data column.
- A string of the form #n, where n is an integer, specifying the nth display column.
열 식별자는 다음 형식 중 하나를 사용한다.
- 열 옵션 목록의 상징적 이름이다.
- 정수 n은 n번째 데이터 열을 지정한다.
- #n 형식의 문자열, 여기서 n은 정수이며 n번째 표시 열을 지정한다.
Notes:
- Item’s option values may be displayed in a different order than the order in which they are stored.
- Column #0 always refers to the tree column, even if show=”tree” is not specified.
참고:
- 항목의 옵션 값은 저장된 순서와 다른 순서로 표시될 수 있다.
- 열 #0은 show="tree"가 지정되지 않은 경우에도 항상 트리 열을 참조한다.
A data column number is an index into an item’s option values list; a display column number is the column number in the tree where the values are displayed. Tree labels are displayed in column #0. If option displaycolumns is not set, then data column n is displayed in column #n+1. Again, column #0 always refers to the tree column.
데이터 열 번호는 항목의 옵션 값 목록에 대한 인덱스이고 표시 열 번호는 값이 표시되는 트리의 열 번호이다. 트리 레이블은 열 #0에 표시된다. 옵션 displaycolumns가 설정되지 않은 경우 데이터 열 n은 열 #n+1에 표시된다. 다시 말하지만 열 #0은 항상 트리 열을 참조한다.
Virtual Events
The Treeview widget generates the following virtual events.
Treeview 위젯은 다음과 같은 가상 이벤트를 생성한다.
Event Description <<TreeviewSelect>> Generated whenever the selection changes. <<TreeviewOpen>> Generated just before settings the focus item to open=True. <<TreeviewClose>> Generated just after setting the focus item to open=False. 이벤트 설명 <<TreeviewSelect>> 선택이 변경될 때마다 생성된다. <<TreeviewOpen>> 포커스 항목을 open=True로 설정하기 직전에 생성된다. <<TreeviewClose>> 포커스 항목을 open=False로 설정한 직후에 생성된다. The Treeview.focus() and Treeview.selection() methods can be used to determine the affected item or items.
Treeview.focus() 및 Treeview.selection() 메서드는 영향을 받는 항목 또는 항목을 확인하는 데 사용할 수 있다.
ttk.Treeview
class tkinter.ttk.Treeview
bbox(item, column=None)
Returns the bounding box (relative to the treeview widget’s window) of the specified item in the form (x, y, width, height).
If column is specified, returns the bounding box of that cell. If the item is not visible (i.e., if it is a descendant of a closed item or is scrolled offscreen), returns an empty string.
지정된 항목의 경계 상자(트리뷰 위젯의 창 기준)를 (x, y, width, height) 형식으로 반환한다.
column이 지정된 경우 해당 셀의 경계 상자를 반환한다. 항목이 표시되지 않는 경우(즉, 닫힌 항목의 자손이거나 화면 밖으로 스크롤된 경우) 빈 문자열을 반환한다.
get_children(item=None)
Returns the list of children belonging to item.
If item is not specified, returns root children.
item에 속하는 자식 목록을 반환한다.
item이 지정되지 않은 경우 루트 자식을 반환한다.
set_children(item, *newchildren)
Replaces item’s child with newchildren.
Children present in item that are not present in newchildren are detached from the tree. No items in newchildren may be an ancestor of item. Note that not specifying newchildren results in detaching item’s children.
item의 자식을 newchildren으로 바꾼다.
newchildren에 없는 item에 있는 자식은 트리에서 분리된다. newchildren의 항목은 item의 조상이 될 수 없다. newchildren을 지정하지 않으면 item의 자식이 분리된다.
column(column, option=None, **kw)
Query or modify the options for the specified column.
If kw is not given, returns a dict of the column option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values.
The valid options/values are:
지정된 열의 옵션을 쿼리하거나 수정한다.
kw가 지정되지 않은 경우 열 옵션 값의 사전을 반환한다. option이 지정된 경우 해당 옵션의 값이 반환된다. 그렇지 않으면 옵션을 해당 값으로 설정한다.
유효한 옵션/값은 다음과 같다.
id
Returns the column name. This is a read-only option.
열 이름을 반환한다. 이것은 읽기 전용 옵션이다.
anchor: One of the standard Tk anchor values.
Specifies how the text in this column should be aligned with respect to the cell.
anchor: 표준 Tk 앵커 값 중 하나이다.
이 열의 텍스트가 셀을 기준으로 정렬되는 방식을 지정한다.
minwidth: width
The minimum width of the column in pixels. The treeview widget will not make the column any smaller than specified by this option when the widget is resized or the user drags a column.
열의 최소 너비(픽셀)이다. 위젯의 크기를 조정하거나 사용자가 열을 끌 때 트리뷰 위젯은 이 옵션에서 지정한 것보다 열을 더 작게 만들지 않는다.
stretch: True/False
Specifies whether the column’s width should be adjusted when the widget is resized.
위젯의 크기를 조정할 때 열의 너비를 조정할지 여부를 지정한다.
width: width
The width of the column in pixels.
To configure the tree column, call this with column = “#0”
열의 너비(픽셀)이다.
트리 열을 구성하려면 column = “#0”으로 호출한다.
delete(*items)
Delete all specified items and all their descendants.
The root item may not be deleted.
지정된 모든 항목과 모든 하위 항목을 삭제한다.
루트 항목은 삭제할 수 없다.
detach(*items)
Unlinks all of the specified items from the tree.
The items and all of their descendants are still present, and may be reinserted at another point in the tree, but will not be displayed.
The root item may not be detached.
지정된 모든 항목을 트리에서 연결 해제한다.
항목과 모든 하위 항목은 여전히 존재하며 트리의 다른 지점에 다시 삽입할 수 있지만 표시되지 않는다.
루트 항목은 분리할 수 없다.
exists(item)
Returns True if the specified item is present in the tree.
지정된 항목이 트리에 있으면 True를 반환한다.
focus(item=None)
If item is specified, sets the focus item to item. Otherwise, returns the current focus item, or ‘’ if there is none.
항목이 지정되면 포커스 항목을 항목으로 설정한다. 그렇지 않으면 현재 포커스 항목 또는 포커스 항목이 없으면 ‘’을 반환한다.
heading(column, option=None, **kw)
Query or modify the heading options for the specified column.
If kw is not given, returns a dict of the heading option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values.
The valid options/values are:
지정된 열의 제목 옵션을 쿼리하거나 수정한다.
kw가 지정되지 않으면 제목 옵션 값의 사전을 반환한다. 옵션이 지정되면 해당 옵션의 값이 반환된다. 그렇지 않으면 옵션을 해당 값으로 설정한다.
유효한 옵션/값은 다음과 같다.
text: text
The text to display in the column heading.
열 제목에 표시할 텍스트이다.
image: imageName
Specifies an image to display to the right of the column heading.
열 제목 오른쪽에 표시할 이미지를 지정한다.
anchor: anchor
Specifies how the heading text should be aligned. One of the standard Tk anchor values.
제목 텍스트를 정렬하는 방법을 지정한다. 표준 Tk 앵커 값 중 하나이다.
command: callback
A callback to be invoked when the heading label is pressed.
To configure the tree column heading, call this with column = “#0”.
제목 레이블을 눌렀을 때 호출할 콜백이다.
트리 열 제목을 구성하려면 column = "#0"으로 호출한다.
identify(component, x, y)
Returns a description of the specified component under the point given by x and y, or the empty string if no such component is present at that position.
x와 y로 지정된 지점 아래에 있는 지정된 구성 요소의 설명을 반환하거나 해당 위치에 해당 구성 요소가 없으면 빈 문자열을 반환한다.
identify_row(y)
Returns the item ID of the item at position y.
y 위치에 있는 항목의 항목 ID를 반환한다.
identify_column(x)
Returns the data column identifier of the cell at position x.
The tree column has ID #0.
x 위치에 있는 셀의 데이터 열 식별자를 반환한다.
트리 열의 ID는 #0이다.
identify_region(x, y)
Returns one of:
다음 중 하나를 반환한다.
region meaning heading Tree heading area. separator Space between two columns headings. tree The tree area. cell A data cell. region meaning heading 트리 제목 영역. separate 두 열 제목 사이의 공백. tree 트리 영역. cell 데이터 셀. Availability: Tk 8.6.
identify_element(x, y)
Returns the element at position x, y.
x, y 위치에 있는 요소를 반환한다.
Availability: Tk 8.6.
index(item)
Returns the integer index of item within its parent’s list of children.
부모의 자식 목록 내에서 item의 정수 인덱스를 반환한다.
insert(parent, index, iid=None, **kw)
Creates a new item and returns the item identifier of the newly created item.
parent is the item ID of the parent item, or the empty string to create a new top-level item. index is an integer, or the value “end”, specifying where in the list of parent’s children to insert the new item. If index is less than or equal to zero, the new node is inserted at the beginning; if index is greater than or equal to the current number of children, it is inserted at the end. If iid is specified, it is used as the item identifier; iid must not already exist in the tree. Otherwise, a new unique identifier is generated.
See Item Options for the list of available options.
새 항목을 만들고 새로 만든 항목의 항목 식별자를 반환한다.
parent는 부모 항목의 항목 ID이거나, 새 최상위 항목을 만들려면 빈 문자열이다. index는 정수이거나, 부모의 자식 목록에서 새 항목을 삽입할 위치를 지정하는 값 "end"이다. index가 0보다 작거나 같으면 새 노드가 처음에 삽입된다. index가 현재 자식 수보다 크거나 같으면 끝에 삽입된다. iid가 지정되면 항목 식별자로 사용된다. iid는 트리에 이미 존재해서는 안 된다. 그렇지 않으면 새 고유 식별자가 생성된다.
사용 가능한 옵션 목록은 항목 옵션을 참조하라.
item(item, option=None, **kw)
Query or modify the options for the specified item.
If no options are given, a dict with options/values for the item is returned. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values as given by kw.
지정된 항목의 옵션을 쿼리하거나 수정한다.
옵션이 지정되지 않으면 항목의 옵션/값이 포함된 사전이 반환된다. 옵션이 지정되면 해당 옵션의 값이 반환된다. 그렇지 않으면 옵션을 kw에서 지정한 해당 값으로 설정한다.
move(item, parent, index)
Moves item to position index in parent’s list of children.
It is illegal to move an item under one of its descendants. If index is less than or equal to zero, item is moved to the beginning; if greater than or equal to the number of children, it is moved to the end. If item was detached it is reattached.
아이템을 부모의 자식 목록에서 index 위치로 이동한다.
항목을 하위 항목 아래로 옮기는 것은 불법이다. index가 0보다 작거나 같으면 항목이 시작 부분으로 이동하고, 자식 수보다 크거나 같으면 끝 부분으로 이동한다. 항목이 분리된 경우 다시 연결된다.
next(item)
Returns the identifier of item’s next sibling, or ‘’ if item is the last child of its parent.
항목의 다음 형제 식별자를 반환하거나, 항목이 부모의 마지막 자식인 경우 ‘’을 반환한다.
parent(item)
Returns the ID of the parent of item, or ‘’ if item is at the top level of the hierarchy.
항목의 부모 ID를 반환하거나, 항목이 계층 구조의 최상위에 있는 경우 ‘’을 반환한다.
prev(item)
Returns the identifier of item’s previous sibling, or ‘’ if item is the first child of its parent.
항목의 이전 형제 식별자를 반환하거나, 항목이 부모의 첫 번째 자식인 경우 ‘’을 반환한다.
reattach(item, parent, index)
An alias for Treeview.move().
Treeview.move()의 별칭이다.
see(item)
Ensure that item is visible.
Sets all of item’s ancestors open option to True, and scrolls the widget if necessary so that item is within the visible portion of the tree.
항목이 표시되도록 한다.
모든 항목의 조상의 열기 옵션을 True로 설정하고 필요한 경우 위젯을 스크롤하여 항목이 트리의 보이는 부분에 있도록 한다.
selection()
Returns a tuple of selected items.
Changed in version 3.8: selection() no longer takes arguments. For changing the selection state use the following selection methods.
선택된 항목의 튜플을 반환한다.
버전 3.8에서 변경: selection()은 더 이상 인수를 받지 않는다. 선택 상태를 변경하려면 다음 선택 메서드를 사용한다.
selection_set(*items)
items becomes the new selection.
Changed in version 3.6: items can be passed as separate arguments, not just as a single tuple.
항목이 새 선택이 된다.
버전 3.6에서 변경: 항목을 단일 튜플이 아닌 별도의 인수로 전달할 수 있다.
selection_add(*items)
Add items to the selection.
Changed in version 3.6: items can be passed as separate arguments, not just as a single tuple.
선택에 항목을 추가한다.
버전 3.6에서 변경: 항목을 단일 튜플이 아닌 별도의 인수로 전달할 수 있다.
selection_remove(*items)
Remove items from the selection.
Changed in version 3.6: items can be passed as separate arguments, not just as a single tuple.
선택에서 항목을 제거한다.
버전 3.6에서 변경: 항목을 단일 튜플로 전달하지 않고 별도의 인수로 전달할 수 있다.
selection_toggle(*items)
Toggle the selection state of each item in items.
Changed in version 3.6: items can be passed as separate arguments, not just as a single tuple.
항목의 각 항목에 대한 선택 상태를 토글한다.
버전 3.6에서 변경: 항목을 단일 튜플로 전달하지 않고 별도의 인수로 전달할 수 있다.
set(item, column=None, value=None)
With one argument, returns a dictionary of column/value pairs for the specified item. With two arguments, returns the current value of the specified column. With three arguments, sets the value of given column in given item to the specified value.
인수 1개를 사용하면 지정된 항목에 대한 열/값 쌍의 사전을 반환한다. 인수 2개를 사용하면 지정된 열의 현재 값을 반환한다. 인수 3개를 사용하면 지정된 항목의 지정된 열 값을 지정된 값으로 설정한다.
tag_bind(tagname, sequence=None, callback=None)
Bind a callback for the given event sequence to the tag tagname. When an event is delivered to an item, the callbacks for each of the item’s tags option are called.
지정된 이벤트 시퀀스에 대한 콜백을 태그 태그 이름에 바인딩한다. 이벤트가 항목에 전달되면 항목의 각 태그 옵션에 대한 콜백이 호출된다.
tag_configure(tagname, option=None, **kw)
Query or modify the options for the specified tagname.
If kw is not given, returns a dict of the option settings for tagname. If option is specified, returns the value for that option for the specified tagname. Otherwise, sets the options to the corresponding values for the given tagname.
지정된 tagname에 대한 옵션을 쿼리하거나 수정한다.
kw가 지정되지 않으면 tagname에 대한 옵션 설정의 dict를 반환한다. option이 지정되면 지정된 tagname에 대한 해당 옵션의 값을 반환한다. 그렇지 않으면 옵션을 지정된 tagname에 대한 해당 값으로 설정한다.
tag_has(tagname, item=None)
If item is specified, returns 1 or 0 depending on whether the specified item has the given tagname. Otherwise, returns a list of all items that have the specified tag.
Availability: Tk 8.6
item이 지정되면 지정된 item에 지정된 tagname이 있는지 여부에 따라 1 또는 0을 반환한다. 그렇지 않으면 지정된 tag가 있는 모든 항목의 목록을 반환한다.
사용 가능: Tk 8.6
xview(*args)
Query or modify horizontal position of the treeview.
트리뷰의 가로 위치를 쿼리하거나 수정한다.
yview(*args)
Query or modify vertical position of the treeview.
트리뷰의 세로 위치를 쿼리하거나 수정한다.
Ttk Styling
Each widget in ttk is assigned a style, which specifies the set of elements making up the widget and how they are arranged, along with dynamic and default settings for element options. By default the style name is the same as the widget’s class name, but it may be overridden by the widget’s style option. If you don’t know the class name of a widget, use the method Misc.winfo_class() (somewidget.winfo_class()).
ttk의 각 위젯에는 스타일이 지정되어 있으며, 이는 위젯을 구성하는 요소 집합과 해당 요소가 배열되는 방식, 요소 옵션에 대한 동적 및 기본 설정을 지정한다. 기본적으로 스타일 이름은 위젯의 클래스 이름과 동일하지만 위젯의 스타일 옵션으로 재정의될 수 있다. 위젯의 클래스 이름을 모르는 경우 Misc.winfo_class() 메서드(somewidget.winfo_class())를 사용하라.
See also
Tcl’2004 conference presentation
This document explains how the theme engine works
이 문서에서는 테마 엔진의 작동 방식을 설명한다.
class tkinter.ttk.Style
This class is used to manipulate the style database.
class tkinter.ttk.Style
이 클래스는 스타일 데이터베이스를 조작하는 데 사용된다.
configure(style, query_opt=None, **kw)
Query or set the default value of the specified option(s) in style.
Each key in kw is an option and each value is a string identifying the value for that option.
For example, to change every default button to be a flat button with some padding and a different background color:
style에서 지정된 옵션의 기본값을 쿼리하거나 설정한다.
kw의 각 키는 옵션이고 각 값은 해당 옵션의 값을 식별하는 문자열이다.
예를 들어 모든 기본 버튼을 패딩과 다른 배경색이 있는 플랫 버튼으로 변경하려면 다음을 수행한다.
from tkinter import ttk import tkinter root = tkinter.Tk() ttk.Style().configure("TButton", padding=6, relief="flat", background="#ccc") btn = ttk.Button(text="Sample") btn.pack() root.mainloop()
map(style, query_opt=None, **kw)
Query or sets dynamic values of the specified option(s) in style.
Each key in kw is an option and each value should be a list or a tuple (usually) containing statespecs grouped in tuples, lists, or some other preference. A statespec is a compound of one or more states and then a value.
An example may make it more understandable:
style에서 지정된 옵션의 동적 값을 쿼리하거나 설정한다.
kw의 각 키는 옵션이며 각 값은 튜플, 목록 또는 기타 기본 설정으로 그룹화된 statespec을 포함하는 목록 또는 튜플(일반적으로)이어야 한다. statespec은 하나 이상의 상태와 값의 합성이다.
예를 들어 더 이해하기 쉽게 만들 수 있다.
import tkinter from tkinter import ttk root = tkinter.Tk() style = ttk.Style() style.map("C.TButton", foreground=[('pressed', 'red'), ('active', 'blue')], background=[('pressed', '!disabled', 'black'), ('active', 'white')] ) colored_btn = ttk.Button(text="Test", style="C.TButton").pack() root.mainloop()
Note that the order of the (states, value) sequences for an option does matter, if the order is changed to [('active', 'blue'), ('pressed', 'red')] in the foreground option, for example, the result would be a blue foreground when the widget were in active or pressed states.
옵션의 (states, value) 시퀀스의 순서는 중요한다. 예를 들어 전경 옵션에서 [('active', 'blue'), ('pressed', 'red')]로 순서를 변경하면 위젯이 활성 또는 눌림 상태일 때 결과가 파란색 전경이 된다.
lookup(style, option, state=None, default=None)
Returns the value specified for option in style.
If state is specified, it is expected to be a sequence of one or more states. If the default argument is set, it is used as a fallback value in case no specification for option is found.
To check what font a Button uses by default:
style에서 option에 지정된 값을 반환한다.
state가 지정된 경우 하나 이상의 상태 시퀀스가 될 것으로 예상된다. 기본 인수가 설정된 경우 option에 대한 사양이 발견되지 않는 경우 대체 값으로 사용된다.
Button이 기본적으로 사용하는 글꼴을 확인하려면:
from tkinter import ttk print(ttk.Style().lookup("TButton", "font"))
layout(style, layoutspec=None)
Define the widget layout for given style. If layoutspec is omitted, return the layout specification for given style.
layoutspec, if specified, is expected to be a list or some other sequence type (excluding strings), where each item should be a tuple and the first item is the layout name and the second item should have the format described in Layouts.
To understand the format, see the following example (it is not intended to do anything useful):
지정된 스타일의 위젯 레이아웃을 정의한다. layoutspec이 생략되면 지정된 스타일의 레이아웃 사양을 반환한다.
지정된 경우 layoutspec은 목록 또는 기타 시퀀스 유형(문자열 제외)이어야 하며, 각 항목은 튜플이어야 하고 첫 번째 항목은 레이아웃 이름이고 두 번째 항목은 레이아웃에 설명된 형식을 가져야 한다.
형식을 이해하려면 다음 예를 참조하라(유용한 작업을 수행하려는 의도는 아님):
from tkinter import ttk import tkinter root = tkinter.Tk() style = ttk.Style() style.layout("TMenubutton", [ ("Menubutton.background", None), ("Menubutton.button", {"children": [("Menubutton.focus", {"children": [("Menubutton.padding", {"children": [("Menubutton.label", {"side": "left", "expand": 1})] })] })] }), ]) mbtn = ttk.Menubutton(text='Text') mbtn.pack() root.mainloop()
element_create(elementname, etype, *args, **kw)
Create a new element in the current theme, of the given etype which is expected to be either “image” or “from”.
If “image” is used, args should contain the default image name followed by statespec/value pairs (this is the imagespec), and kw may have the following options:
현재 테마에서 "image" 또는 "from"이 될 것으로 예상되는 지정된 etype의 새 요소를 만든다.
"image"를 사용하는 경우 args에는 기본 이미지 이름 뒤에 statespec/value 쌍(이것이 imagespec임)이 포함되어야 하며 kw에는 다음 옵션이 있을 수 있다.
border=padding
padding is a list of up to four integers, specifying the left, top, right, and bottom borders, respectively.
padding은 각각 왼쪽, 위쪽, 오른쪽 및 아래쪽 테두리를 지정하는 최대 4개의 정수 목록이다.
height=height
Specifies a minimum height for the element. If less than zero, the base image’s height is used as a default.
요소의 최소 높이를 지정한다. 0보다 작으면 기본 이미지의 높이가 기본값으로 사용된다.
padding=padding
Specifies the element’s interior padding. Defaults to border’s value if not specified.
요소의 내부 패딩을 지정한다. 지정하지 않으면 테두리의 값이 기본값으로 사용된다.
sticky=spec
Specifies how the image is placed within the final parcel. spec contains zero or more characters “n”, “s”, “w”, or “e”.
이미지가 최종 구획 내에 배치되는 방식을 지정한다. spec에는 "n", "s", "w" 또는 "e" 문자가 0개 이상 포함된다.
width=width
Specifies a minimum width for the element. If less than zero, the base image’s width is used as a default.
Example:
요소의 최소 너비를 지정한다. 0보다 작으면 기본 이미지의 너비가 기본값으로 사용된다.
예:
img1 = tkinter.PhotoImage(master=root, file='button.png') img1 = tkinter.PhotoImage(master=root, file='button-pressed.png') img1 = tkinter.PhotoImage(master=root, file='button-active.png') style = ttk.Style(root) style.element_create('Button.button', 'image', img1, ('pressed', img2), ('active', img3), border=(2, 4), sticky='we')
If “from” is used as the value of etype, element_create() will clone an existing element. args is expected to contain a themename, from which the element will be cloned, and optionally an element to clone from. If this element to clone from is not specified, an empty element will be used. kw is discarded.
Example:
etype의 값으로 "from"을 사용하면 element_create()는 기존 요소를 복제한다. args에는 요소가 복제될 테마 이름과 선택적으로 복제할 요소가 포함되어야 한다. 복제할 요소가 지정되지 않으면 빈 요소가 사용된다. kw는 삭제된다.
예:
style = ttk.Style(root) style.element_create('plain.background', 'from', 'default')
element_names()
Returns the list of elements defined in the current theme.
현재 테마에 정의된 요소 목록을 반환한다.
element_options(elementname)
Returns the list of elementname’s options.
elementname의 옵션 목록을 반환한다.
theme_create(themename, parent=None, settings=None)
Create a new theme.
It is an error if themename already exists. If parent is specified, the new theme will inherit styles, elements and layouts from the parent theme. If settings are present they are expected to have the same syntax used for theme_settings().
새 테마를 만든다.
themename이 이미 있으면 오류이다. parent가 지정되면 새 테마는 부모 테마에서 스타일, 요소 및 레이아웃을 상속한다. 설정이 있는 경우 theme_settings()에 사용된 것과 동일한 구문을 가져야 한다.
theme_settings(themename, settings)
Temporarily sets the current theme to themename, apply specified settings and then restore the previous theme.
Each key in settings is a style and each value may contain the keys ‘configure’, ‘map’, ‘layout’ and ‘element create’ and they are expected to have the same format as specified by the methods Style.configure(), Style.map(), Style.layout() and Style.element_create() respectively.
As an example, let’s change the Combobox for the default theme a bit:
현재 테마를 themename으로 임시로 설정하고 지정된 설정을 적용한 다음 이전 테마를 복원한다.
settings의 각 키는 스타일이고 각 값에는 'configure', 'map', 'layout' 및 'element create' 키가 포함될 수 있으며 각각 Style.configure(), Style.map(), Style.layout() 및 Style.element_create() 메서드에서 지정한 것과 동일한 형식을 가져야 한다.
예를 들어 기본 테마의 Combobox를 약간 변경해 본다.
from tkinter import ttk import tkinter root = tkinter.Tk() style = ttk.Style() style.theme_settings("default", { "TCombobox": { "configure": {"padding": 5}, "map": { "background": [("active", "green2"), ("!disabled", "green4")], "fieldbackground": [("!disabled", "green3")], "foreground": [("focus", "OliveDrab1"), ("!disabled", "OliveDrab2")] } } }) combo = ttk.Combobox().pack() root.mainloop()
theme_names()
Returns a list of all known themes.
알려진 모든 테마 목록을 반환한다.
theme_use(themename=None)
If themename is not given, returns the theme in use. Otherwise, sets the current theme to themename, refreshes all widgets and emits a <<ThemeChanged>> event.
themename이 지정되지 않은 경우 사용 중인 테마를 반환한다. 그렇지 않으면 현재 테마를 themename으로 설정하고 모든 위젯을 새로 고치고 <<ThemeChanged>> 이벤트를 내보낸다.
Layouts
A layout can be just None, if it takes no options, or a dict of options specifying how to arrange the element. The layout mechanism uses a simplified version of the pack geometry manager: given an initial cavity, each element is allocated a parcel.
The valid options/values are:
레이아웃은 옵션을 사용하지 않는 경우 None일 수 있고, 요소를 배열하는 방법을 지정하는 옵션의 사전일 수 있다. 레이아웃 메커니즘은 팩 지오메트리 관리자의 단순화된 버전을 사용한다. 초기 캐비티가 주어지면 각 요소에 소포가 할당된다.
유효한 옵션/값은 다음과 같다.
side: whichside
Specifies which side of the cavity to place the element; one of top, right, bottom or left. If omitted, the element occupies the entire cavity.
요소를 배치할 캐비티의 측면을 지정한다. 위쪽, 오른쪽, 아래쪽 또는 왼쪽 중 하나이다. 생략하면 요소가 전체 캐비티를 차지한다.
sticky: nswe
Specifies where the element is placed inside its allocated parcel.
할당된 파셀 내에서 요소를 배치할 위치를 지정한다.
unit: 0 or 1
If set to 1, causes the element and all of its descendants to be treated as a single element for the purposes of Widget.identify() et al. It’s used for things like scrollbar thumbs with grips.
1로 설정하면 Widget.identify() 등의 목적을 위해 요소와 모든 하위 요소가 단일 요소로 처리된다. 그립이 있는 스크롤바 썸과 같은 것에 사용된다.
children: [sublayout… ]
Specifies a list of elements to place inside the element. Each element is a tuple (or other sequence type) where the first item is the layout name, and the other is a Layout.
요소 내부에 배치할 요소 목록을 지정한다. 각 요소는 튜플(또는 다른 시퀀스 유형)이며, 첫 번째 항목은 레이아웃 이름이고 다른 항목은 레이아웃이다.
tkinter.tix — Extension widgets for Tk
Deprecated since version 3.6: This Tk extension is unmaintained and should not be used in new code. Use tkinter.ttk instead.
The tkinter.tix (Tk Interface Extension) module provides an additional rich set of widgets. Although the standard Tk library has many useful widgets, they are far from complete. The tkinter.tix library provides most of the commonly needed widgets that are missing from standard Tk: HList, ComboBox, Control (a.k.a. SpinBox) and an assortment of scrollable widgets. tkinter.tix also includes many more widgets that are generally useful in a wide range of applications: NoteBook, FileEntry, PanedWindow, etc; there are more than 40 of them.
With all these new widgets, you can introduce new interaction techniques into applications, creating more useful and more intuitive user interfaces. You can design your application by choosing the most appropriate widgets to match the special needs of your application and users.
버전 3.6부터 사용되지 않음: 이 Tk 확장은 유지 관리되지 않으며 새 코드에서 사용하면 안 된다. 대신 tkinter.ttk를 사용하라.
tkinter.tix(Tk 인터페이스 확장) 모듈은 풍부한 추가 위젯 세트를 제공한다. 표준 Tk 라이브러리에는 유용한 위젯이 많이 있지만 아직 완벽하지는 않다. tkinter.tix 라이브러리는 표준 Tk에서 누락된 일반적으로 필요한 위젯의 대부분을 제공한다. HList, ComboBox, Control(일명 SpinBox) 및 다양한 스크롤 가능 위젯이 있다. tkinter.tix에는 일반적으로 다양한 애플리케이션에 유용한 많은 위젯이 포함되어 있다. NoteBook, FileEntry, PanedWindow 등이 있으며, 그 수는 40개가 넘는다.
이러한 모든 새로운 위젯을 사용하면 애플리케이션에 새로운 상호 작용 기술을 도입하여 보다 유용하고 직관적인 사용자 인터페이스를 만들 수 있다. 애플리케이션과 사용자의 특별한 요구 사항에 맞는 가장 적합한 위젯을 선택하여 애플리케이션을 디자인할 수 있다.
See also
The home page for Tix. This includes links to additional documentation and downloads.
On-line version of the man pages and reference material.
On-line version of the programmer’s reference material.
Tix applications for development of Tix and Tkinter programs. Tide applications work under Tk or Tkinter, and include TixInspect, an inspector to remotely modify and debug Tix/Tk/Tkinter applications.
Using Tix
class tkinter.tix.Tk(screenName=None, baseName=None, className='Tix')
Toplevel widget of Tix which represents mostly the main window of an application. It has an associated Tcl interpreter.
Classes in the tkinter.tix module subclasses the classes in the tkinter. The former imports the latter, so to use tkinter.tix with Tkinter, all you need to do is to import one module. In general, you can just import tkinter.tix, and replace the toplevel call to tkinter.Tk with tix.Tk:
Tix의 최상위 위젯으로, 주로 애플리케이션의 메인 창을 나타낸다. 연관된 Tcl 인터프리터가 있다.
tkinter.tix 모듈의 클래스는 tkinter의 클래스를 하위 클래스화한다. 전자는 후자를 가져오므로 Tkinter에서 tkinter.tix를 사용하려면 모듈 하나만 가져오면 된다. 일반적으로 tkinter.tix를 가져오고 tkinter.Tk에 대한 최상위 호출을 tix.Tk로 바꾸면 된다.
from tkinter import tix from tkinter.constants import * root = tix.Tk()
To use tkinter.tix, you must have the Tix widgets installed, usually alongside your installation of the Tk widgets. To test your installation, try the following:
tkinter.tix를 사용하려면 일반적으로 Tk 위젯을 설치할 때 Tix 위젯도 설치해야 한다. 설치를 테스트하려면 다음을 시도하라.
from tkinter import tix root = tix.Tk() root.tk.eval('package require Tix')
Tix Widgets
Tix introduces over 40 widget classes to the tkinter repertoire.
Tix는 tkinter 레퍼토리에 40개 이상의 위젯 클래스를 도입한다.
Basic Widgets
class tkinter.tix.Balloon
A Balloon that pops up over a widget to provide help. When the user moves the cursor inside a widget to which a Balloon widget has been bound, a small pop-up window with a descriptive message will be shown on the screen.
도움을 제공하기 위해 위젯 위에 팝업되는 Balloon이다. 사용자가 Balloon 위젯이 바인딩된 위젯 내부로 커서를 이동하면 설명 메시지가 있는 작은 팝업 창이 화면에 표시된다.
class tkinter.tix.ButtonBox
The ButtonBox widget creates a box of buttons, such as is commonly used for Ok Cancel.
ButtonBox 위젯은 일반적으로 Ok Cancel에 사용되는 것과 같은 버튼 상자를 만든다.
class tkinter.tix.ComboBox
The ComboBox widget is similar to the combo box control in MS Windows. The user can select a choice by either typing in the entry subwidget or selecting from the listbox subwidget.
ComboBox 위젯은 MS Windows의 콤보 상자 컨트롤과 비슷하다. 사용자는 엔트리 하위 위젯에 입력하거나 목록 상자 하위 위젯에서 선택하여 선택할 수 있다.
class tkinter.tix.Control
The Control widget is also known as the SpinBox widget. The user can adjust the value by pressing the two arrow buttons or by entering the value directly into the entry. The new value will be checked against the user-defined upper and lower limits.
Control 위젯은 SpinBox 위젯이라고도 한다. 사용자는 두 개의 화살표 버튼을 누르거나 엔트리에 직접 값을 입력하여 값을 조정할 수 있다. 새 값은 사용자가 정의한 상한 및 하한과 비교된다.
class tkinter.tix.LabelEntry
The LabelEntry widget packages an entry widget and a label into one mega widget. It can be used to simplify the creation of “entry-form” type of interface.
LabelEntry 위젯은 엔트리 위젯과 레이블을 하나의 메가 위젯으로 패키징한다. "엔트리 폼" 유형의 인터페이스 생성을 간소화하는 데 사용할 수 있다.
class tkinter.tix.LabelFrame
The LabelFrame widget packages a frame widget and a label into one mega widget. To create widgets inside a LabelFrame widget, one creates the new widgets relative to the frame subwidget and manage them inside the frame subwidget.
LabelFrame 위젯은 프레임 위젯과 레이블을 하나의 메가 위젯으로 패키징한다. LabelFrame 위젯 내부에 위젯을 만들려면 프레임 하위 위젯을 기준으로 새 위젯을 만들고 프레임 하위 위젯 내부에서 관리한다.
class tkinter.tix.Meter
The Meter widget can be used to show the progress of a background job which may take a long time to execute.
Meter 위젯은 실행하는 데 시간이 오래 걸릴 수 있는 백그라운드 작업의 진행 상황을 표시하는 데 사용할 수 있다.
class tkinter.tix.OptionMenu
The OptionMenu creates a menu button of options.
OptionMenu는 옵션의 메뉴 버튼을 만든다.
class tkinter.tix.PopupMenu
The PopupMenu widget can be used as a replacement of the tk_popup command. The advantage of the Tix PopupMenu widget is it requires less application code to manipulate.
PopupMenu 위젯은 tk_popup 명령을 대체하는 데 사용할 수 있다. Tix PopupMenu 위젯의 장점은 조작하는 데 필요한 애플리케이션 코드가 적다는 것이다.
class tkinter.tix.Select
The Select widget is a container of button subwidgets. It can be used to provide radio-box or check-box style of selection options for the user.
Select 위젯은 버튼 하위 위젯의 컨테이너이다. 사용자에게 라디오 상자 또는 체크 상자 스타일의 선택 옵션을 제공하는 데 사용할 수 있다.
class tkinter.tix.StdButtonBox
The StdButtonBox widget is a group of standard buttons for Motif-like dialog boxes.
StdButtonBox 위젯은 Motif와 유사한 대화 상자를 위한 표준 버튼 그룹이다.
File Selectors
class tkinter.tix.DirList
The DirList widget displays a list view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory.
DirList 위젯은 디렉토리, 이전 디렉토리 및 하위 디렉토리의 목록 보기를 표시한다. 사용자는 목록에 표시된 디렉토리 중 하나를 선택하거나 다른 디렉토리로 변경할 수 있다.
class tkinter.tix.DirTree
The DirTree widget displays a tree view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory.
DirTree 위젯은 디렉토리, 이전 디렉토리 및 하위 디렉토리의 트리 보기를 표시한다. 사용자는 목록에 표시된 디렉토리 중 하나를 선택하거나 다른 디렉토리로 변경할 수 있다.
class tkinter.tix.DirSelectDialog
The DirSelectDialog widget presents the directories in the file system in a dialog window. The user can use this dialog window to navigate through the file system to select the desired directory.
DirSelectDialog 위젯은 파일 시스템의 디렉토리를 대화 상자 창에 표시한다. 사용자는 이 대화 상자 창을 사용하여 파일 시스템을 탐색하여 원하는 디렉토리를 선택할 수 있다.
class tkinter.tix.DirSelectBox
The DirSelectBox is similar to the standard Motif(TM) directory-selection box. It is generally used for the user to choose a directory. DirSelectBox stores the directories mostly recently selected into a ComboBox widget so that they can be quickly selected again.
DirSelectBox는 표준 Motif(TM) 디렉토리 선택 상자와 유사하다. 일반적으로 사용자가 디렉토리를 선택하는 데 사용된다. DirSelectBox는 가장 최근에 선택된 디렉토리를 ComboBox 위젯에 저장하여 빠르게 다시 선택할 수 있도록 한다.
class tkinter.tix.ExFileSelectBox
The ExFileSelectBox widget is usually embedded in a tixExFileSelectDialog widget. It provides a convenient method for the user to select files. The style of the ExFileSelectBox widget is very similar to the standard file dialog on MS Windows 3.1.
ExFileSelectBox 위젯은 일반적으로 tixExFileSelectDialog 위젯에 내장되어 있다. 사용자가 파일을 선택하는 데 편리한 방법을 제공한다. ExFileSelectBox 위젯의 스타일은 MS Windows 3.1의 표준 파일 대화 상자와 매우 유사하다.
class tkinter.tix.FileSelectBox
The FileSelectBox is similar to the standard Motif(TM) file-selection box. It is generally used for the user to choose a file. FileSelectBox stores the files mostly recently selected into a ComboBox widget so that they can be quickly selected again.
FileSelectBox는 표준 Motif(TM) 파일 선택 상자와 유사하다. 일반적으로 사용자가 파일을 선택하는 데 사용된다. FileSelectBox는 가장 최근에 선택한 파일을 ComboBox 위젯에 저장하여 빠르게 다시 선택할 수 있도록 한다.
class tkinter.tix.FileEntry
The FileEntry widget can be used to input a filename. The user can type in the filename manually. Alternatively, the user can press the button widget that sits next to the entry, which will bring up a file selection dialog.
FileEntry 위젯은 파일 이름을 입력하는 데 사용할 수 있다. 사용자는 파일 이름을 수동으로 입력할 수 있다. 또는 사용자는 항목 옆에 있는 버튼 위젯을 눌러 파일 선택 대화 상자를 표시할 수 있다.
Hierarchical ListBox
class tkinter.tix.HList
The HList widget can be used to display any data that have a hierarchical structure, for example, file system directory trees. The list entries are indented and connected by branch lines according to their places in the hierarchy.
HList 위젯은 파일 시스템 디렉토리 트리와 같이 계층적 구조를 가진 모든 데이터를 표시하는 데 사용할 수 있다. 목록 항목은 계층 구조에서 위치에 따라 들여쓰기되고 분기선으로 연결된다.
class tkinter.tix.CheckList
The CheckList widget displays a list of items to be selected by the user. CheckList acts similarly to the Tk checkbutton or radiobutton widgets, except it is capable of handling many more items than checkbuttons or radiobuttons.
CheckList 위젯은 사용자가 선택할 항목 목록을 표시한다. CheckList는 Tk 체크버튼 또는 라디오버튼 위젯과 유사하게 작동하지만 체크버튼 또는 라디오버튼보다 훨씬 더 많은 항목을 처리할 수 있다.
class tkinter.tix.Tree
The Tree widget can be used to display hierarchical data in a tree form. The user can adjust the view of the tree by opening or closing parts of the tree.
Tree 위젯은 트리 형태로 계층적 데이터를 표시하는 데 사용할 수 있다. 사용자는 트리의 일부를 열거나 닫아 트리의 보기를 조정할 수 있다.
Tabular ListBox
class tkinter.tix.TList
The TList widget can be used to display data in a tabular format. The list entries of a TList widget are similar to the entries in the Tk listbox widget. The main differences are (1) the TList widget can display the list entries in a two dimensional format and (2) you can use graphical images as well as multiple colors and fonts for the list entries.
TList 위젯은 데이터를 표 형식으로 표시하는 데 사용할 수 있다. TList 위젯의 목록 항목은 Tk 목록 상자 위젯의 항목과 비슷하다. 주요 차이점은 (1) TList 위젯은 목록 항목을 2차원 형식으로 표시할 수 있고 (2) 목록 항목에 그래픽 이미지와 여러 색상 및 글꼴을 사용할 수 있다는 것이다.
Manager Widgets
class tkinter.tix.PanedWindow
The PanedWindow widget allows the user to interactively manipulate the sizes of several panes. The panes can be arranged either vertically or horizontally. The user changes the sizes of the panes by dragging the resize handle between two panes.
PanedWindow 위젯을 사용하면 사용자가 여러 창의 크기를 대화형으로 조작할 수 있다. 창은 수직 또는 수평으로 배열할 수 있다. 사용자는 두 창 사이의 크기 조정 핸들을 끌어서 창의 크기를 변경한다.
class tkinter.tix.ListNoteBook
The ListNoteBook widget is very similar to the TixNoteBook widget: it can be used to display many windows in a limited space using a notebook metaphor. The notebook is divided into a stack of pages (windows). At one time only one of these pages can be shown. The user can navigate through these pages by choosing the name of the desired page in the hlist subwidget.
ListNoteBook 위젯은 TixNoteBook 위젯과 매우 유사하다. 노트북 메타포를 사용하여 제한된 공간에 많은 창을 표시하는 데 사용할 수 있다. 노트북은 페이지(창) 스택으로 나뉜다. 한 번에 이러한 페이지 중 하나만 표시할 수 있다. 사용자는 hlist 하위 위젯에서 원하는 페이지의 이름을 선택하여 이러한 페이지를 탐색할 수 있다.
class tkinter.tix.NoteBook
The NoteBook widget can be used to display many windows in a limited space using a notebook metaphor. The notebook is divided into a stack of pages. At one time only one of these pages can be shown. The user can navigate through these pages by choosing the visual “tabs” at the top of the NoteBook widget.
NoteBook 위젯은 노트북 메타포를 사용하여 제한된 공간에 많은 창을 표시하는 데 사용할 수 있다. 노트북은 페이지 스택으로 나뉜다. 한 번에 이러한 페이지 중 하나만 표시할 수 있다. 사용자는 NoteBook 위젯 상단의 시각적 "탭"을 선택하여 이러한 페이지를 탐색할 수 있다.
Image Types
The tkinter.tix module adds:
pixmap capabilities to all tkinter.tix and tkinter widgets to create color images from XPM files.
Compound image types can be used to create images that consists of multiple horizontal lines; each line is composed of a series of items (texts, bitmaps, images or spaces) arranged from left to right. For example, a compound image can be used to display a bitmap and a text string simultaneously in a Tk Button widget.
tkinter.tix 모듈은 다음을 추가한다.
모든 tkinter.tix 및 tkinter 위젯에 pixmap 기능을 추가하여 XPM 파일에서 컬러 이미지를 만든다.
복합 이미지 유형을 사용하면 여러 개의 가로줄로 구성된 이미지를 만들 수 있다. 각 줄은 왼쪽에서 오른쪽으로 배열된 일련의 항목(텍스트, 비트맵, 이미지 또는 공백)으로 구성된다. 예를 들어, 복합 이미지를 사용하여 Tk Button 위젯에서 비트맵과 텍스트 문자열을 동시에 표시할 수 있다.
Miscellaneous Widgets
class tkinter.tix.InputOnly
The InputOnly widgets are to accept inputs from the user, which can be done with the bind command (Unix only).
InputOnly 위젯은 사용자로부터 입력을 받는 것으로, bind 명령(Unix 전용)으로 수행할 수 있다.
Form Geometry Manager
In addition, tkinter.tix augments tkinter by providing:
또한 tkinter.tix는 다음을 제공하여 tkinter를 증강한다.
class tkinter.tix.Form
The Form geometry manager based on attachment rules for all Tk widgets.
모든 Tk 위젯에 대한 첨부 규칙에 기반한 폼 지오메트리 관리자.
Tix Commands
class tkinter.tix.tixCommand
The tix commands provide access to miscellaneous elements of Tix’s internal state and the Tix application context. Most of the information manipulated by these methods pertains to the application as a whole, or to a screen or display, rather than to a particular window.
To view the current settings, the common usage is:
tix 명령은 Tix의 내부 상태와 Tix 애플리케이션 컨텍스트의 다양한 요소에 대한 액세스를 제공한다. 이러한 메서드에서 조작하는 대부분의 정보는 특정 창이 아닌 애플리케이션 전체 또는 화면이나 디스플레이와 관련이 있다.
현재 설정을 보려면 일반적으로 다음과 같이 사용한다.
from tkinter import tix root = tix.Tk() print(root.tix_configure())
tixCommand.tix_configure(cnf=None, **kw)
Query or modify the configuration options of the Tix application context. If no option is specified, returns a dictionary all of the available options. If option is specified with no value, then the method returns a list describing the one named option (this list will be identical to the corresponding sublist of the value returned if no option is specified). If one or more option-value pairs are specified, then the method modifies the given option(s) to have the given value(s); in this case the method returns an empty string. Option may be any of the configuration options.
Tix 애플리케이션 컨텍스트의 구성 옵션을 쿼리하거나 수정한다. 옵션이 지정되지 않으면 사용 가능한 모든 옵션의 사전을 반환한다. 옵션이 값 없이 지정되면 메서드는 명명된 옵션 하나를 설명하는 목록을 반환한다(이 목록은 옵션이 지정되지 않은 경우 반환된 값의 해당 하위 목록과 동일하다). 하나 이상의 옵션-값 쌍이 지정되면 메서드는 지정된 옵션을 수정하여 지정된 값을 갖도록 한다. 이 경우 메서드는 빈 문자열을 반환한다. 옵션은 구성 옵션 중 하나일 수 있다.
tixCommand.tix_cget(option)
Returns the current value of the configuration option given by option. Option may be any of the configuration options.
옵션에서 지정한 구성 옵션의 현재 값을 반환한다. 옵션은 구성 옵션 중 하나일 수 있다.
tixCommand.tix_getbitmap(name)
Locates a bitmap file of the name name.xpm or name in one of the bitmap directories (see the tix_addbitmapdir() method). By using tix_getbitmap(), you can avoid hard coding the pathnames of the bitmap files in your application. When successful, it returns the complete pathname of the bitmap file, prefixed with the character @. The returned value can be used to configure the bitmap option of the Tk and Tix widgets.
비트맵 디렉터리 중 하나에서 이름이 name.xpm 또는 name인 비트맵 파일을 찾는다(tix_addbitmapdir() 메서드 참조). tix_getbitmap()을 사용하면 애플리케이션에서 비트맵 파일의 경로 이름을 하드 코딩하지 않아도 된다. 성공하면 문자 @로 시작하는 비트맵 파일의 전체 경로 이름을 반환한다. 반환된 값은 Tk 및 Tix 위젯의 비트맵 옵션을 구성하는 데 사용할 수 있다.
tixCommand.tix_addbitmapdir(directory)
Tix maintains a list of directories under which the tix_getimage() and tix_getbitmap() methods will search for image files. The standard bitmap directory is $TIX_LIBRARY/bitmaps. The tix_addbitmapdir() method adds directory into this list. By using this method, the image files of an applications can also be located using the tix_getimage() or tix_getbitmap() method.
Tix는 tix_getimage() 및 tix_getbitmap() 메서드가 이미지 파일을 검색할 디렉토리 목록을 유지 관리한다. 표준 비트맵 디렉토리는 $TIX_LIBRARY/bitmaps이다. tix_addbitmapdir() 메서드는 이 목록에 디렉토리를 추가한다. 이 메서드를 사용하면 tix_getimage() 또는 tix_getbitmap() 메서드를 사용하여 애플리케이션의 이미지 파일을 찾을 수도 있다.
tixCommand.tix_filedialog([dlgclass])
Returns the file selection dialog that may be shared among different calls from this application. This method will create a file selection dialog widget when it is called the first time. This dialog will be returned by all subsequent calls to tix_filedialog(). An optional dlgclass parameter can be passed as a string to specified what type of file selection dialog widget is desired. Possible options are tix, FileSelectDialog or tixExFileSelectDialog.
이 애플리케이션의 다른 호출에서 공유될 수 있는 파일 선택 대화 상자를 반환한다. 이 메서드는 처음 호출될 때 파일 선택 대화 상자 위젯을 생성한다. 이 대화 상자는 tix_filedialog()에 대한 모든 후속 호출에서 반환된다. 선택적 dlgclass 매개변수는 문자열로 전달되어 원하는 파일 선택 대화 상자 위젯의 유형을 지정할 수 있다. 가능한 옵션은 tix, FileSelectDialog 또는 tixExFileSelectDialog이다.
tixCommand.tix_getimage(self, name)
Locates an image file of the name name.xpm, name.xbm or name.ppm in one of the bitmap directories (see the tix_addbitmapdir() method above). If more than one file with the same name (but different extensions) exist, then the image type is chosen according to the depth of the X display: xbm images are chosen on monochrome displays and color images are chosen on color displays. By using tix_getimage(), you can avoid hard coding the pathnames of the image files in your application. When successful, this method returns the name of the newly created image, which can be used to configure the image option of the Tk and Tix widgets.
비트맵 디렉터리 중 하나에서 이름이 name.xpm, name.xbm 또는 name.ppm인 이미지 파일을 찾는다(위의 tix_addbitmapdir() 메서드 참조). 이름이 같지만 확장자가 다른 파일이 두 개 이상 있는 경우 X 디스플레이의 깊이에 따라 이미지 유형이 선택된다. xbm 이미지는 흑백 디스플레이에서 선택되고 컬러 이미지는 컬러 디스플레이에서 선택된다. tix_getimage()를 사용하면 애플리케이션에서 이미지 파일의 경로 이름을 하드 코딩하지 않아도 된다. 성공하면 이 메서드는 새로 생성된 이미지의 이름을 반환하며, 이를 사용하여 Tk 및 Tix 위젯의 이미지 옵션을 구성할 수 있다.
tixCommand.tix_option_get(name)
Gets the options maintained by the Tix scheme mechanism.
Tix 스킴 메커니즘에서 유지 관리하는 옵션을 가져온다.
tixCommand.tix_resetoptions(newScheme, newFontSet[, newScmPrio])
Resets the scheme and fontset of the Tix application to newScheme and newFontSet, respectively. This affects only those widgets created after this call. Therefore, it is best to call the resetoptions method before the creation of any widgets in a Tix application.
The optional parameter newScmPrio can be given to reset the priority level of the Tk options set by the Tix schemes.
Because of the way Tk handles the X option database, after Tix has been has imported and inited, it is not possible to reset the color schemes and font sets using the tix_config() method. Instead, the tix_resetoptions() method must be used.
Tix 애플리케이션의 스킴과 글꼴 세트를 각각 newScheme과 newFontSet으로 재설정한다. 이는 이 호출 이후에 생성된 위젯에만 영향을 미친다. 따라서 Tix 애플리케이션에서 위젯을 생성하기 전에 resetoptions 메서드를 호출하는 것이 가장 좋다.
선택적 매개변수 newScmPrio를 지정하여 Tix 스킴에서 설정한 Tk 옵션의 우선 순위 수준을 재설정할 수 있다.
Tk가 X 옵션 데이터베이스를 처리하는 방식 때문에 Tix를 가져와 초기화한 후에는 tix_config() 메서드를 사용하여 색 구성표와 글꼴 세트를 재설정할 수 없다. 대신 tix_resetoptions() 메서드를 사용해야 한다.
728x90'코딩 > Python' 카테고리의 다른 글
python/구글번역기를 위해 문서를 읽고 5000자 이내의 내용을 클립보드로 복사하는 프로그램 (0) 2024.08.02 Python/나만의 유틸리티 라이브러리 사용 (0) 2024.07.25 Python/GPS 파일 읽고 속도와 경로를 지도에 그리기 (0) 2024.07.25 Python/gpxpy, GPX file parser (3) 2024.07.23 Python/Pandas/GroupBy (0) 2024.07.13