tkinter和ttk如何在Python 3.5中工作?

问题描述:

我正在学习Python,我有一个关于.grid()方法的问题。 在笔者给的例子,他有*使进口像这样:tkinter和ttk如何在Python 3.5中工作?

from tkinter import * 
from tkinter import ttk, filedialog, messagebox 
import base64 
import json 
import os 
from bs4 import BeautifulSoup 
import requests 

然后,他创建了根窗口,和主框架,像这样:

_root = Tk() # tkinter object, main window 
_root.title('Scrape app') # window title 
_root.resizable(width=False, height=False) 
_mainframe = ttk.Frame(_root, padding='5 5 5 5') 
_mainframe.grid(row=0, column=0, sticky=(E, W, N, S)) 

到目前为止这么好,我抓住了一切。

import tkinter as tk 
from tkinter import ttk, messagebox, filedialog 
import base64 
import json 
import os 
from bs4 import BeautifulSoup 
import requests 

    root_window = tk.Tk() 
    root_window.title('My first attemp of custom guiscrape') 
    root_window.resizable(width=False, height=False) 
    # First Frame 
    g_main_frame = ttk.Frame(root_window, padding='5 5 5 5') 
    g_main_frame.grid(row=0, column=0, sticky='NSWE') 
    g_url_frame = ttk.LabelFrame(g_main_frame, text='URL', padding='5 5 5 5') 
    g_url_frame.grid(row=0, column=0, sticky='EW') 
    g_url_frame.columnconfigure(0, weight=1) 
    g_url_frame.rowconfigure(0, weight=1) 
    var_url = tk.StringVar() 
    var_url.set('http://localhost:8000') 
    g_url_entry = ttk.Entry(g_url_frame, width=40, textvariable=var_url) 
    g_url_entry.grid(row=0, column=0, sticky='NESW', padx=5) 
    root_window.mainloop() 

这里的问题是:当他说,与*进口并不是因为名称冲突的一个很好的做法,所以我试图创造良好做法类似的东西思维之一,我这样做的问题开始当出现_mainframe.grid()时,sticky选项会得到一个带有四个常量的元组,但是当我试图给出一个元组时,我得到一个错误,常量E没有被定义,所以我必须使用像'NEWS'这样的字符串,与作者的方法(N,E,W,S)有很大不同。

与tkinter和ttk的网格方法不同吗?什么可能是最好的方法来使用它?我找不到更多有关ttk的文档,可以解决我的疑问,希望你能帮助!

这是因为这些也是tkinter的一部分。您需要使用(tk.N, tk.E, tk.W, tk.S)

+0

非常感谢!你是一个救星!,没有看到即将到来。我在哪里可以检查有关tkinter和ttk的更多信息?而且,坚持下去更好吗?或者使用pyQt?我读过它,但我是Python的新手! – jdecuirm

+0

您可以随时使用内置的help()函数:help('tkinter')'。从命令行使用'pydoc':'pydoc tkinter'。至于图书馆推荐,我只使用了'tkinter'和'PyGTK +'。在这个阶段我不会为你推荐'PyGTK +',所以我不能真正帮助你。 – zondo

+0

非常感谢!在你的帮助下度过了我的夜晚! – jdecuirm