2016-03-03 70 views
0

我正在學習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的文檔,可以解決我的疑問,希望你能幫助!

回答

3

這是因爲這些也是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