tkinter和ttk如何在python 3.5中运行?

时间:2016-03-03 03:06:44

标签: python tkinter ttk

我正在学习Python,我对.grid()方法有疑问。 在作者给出的例子中,他正在使用*进行导入:

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()出现时,粘性选项在作者的例子中得到一个带有四个常量的元组,但是当我尝试在我的尝试中给出一个元组时,我得到一个错误,常数E没有定义,所以我必须使用类似' NEWS'这样的字符串,与作者的方法(N,E,W,S)有很大不同。

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

1 个答案:

答案 0 :(得分:4)

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