Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 22, 2012 14:01:33

Vikt3rBeginerInPyth
От:
Зарегистрирован: 2012-01-29
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Взятие var из Text[]

При вызове окон редакторов python пишет:

AttributeError: ‘None Type’ object has not attribute ‘get’

from tkinter import *
from tkinter.messagebox import *
import sys
import time
import os

a = "1"

name = "page.html"

if os.path.exists(".\Web-pages\style.css"):
pass
else:
s = open(".\Web-pages\style.css", "w")
s.write("##CSS Style file gen by HtmlEdit")
s.close()

tk = Tk()
tk.geometry("161x150")
tk.title("Html Editor for Professional x1 BetaTest")
tk.resizable(False, False)
f = open(".\Web-pages\page.html", "w")

if os.path.exists("./Web-pages"):
showinfo("Папка существует.", "Папка Web-pages существует.\nВ папку будут помещены все созданные страницы.")
else:
os.mkdir("./Web-pages")

def create():
print ("Creating...")
f.write("<html>\n<head>\n<LINK REL=STYLESHEET TYPE='text/css' HREF='style.css'>\n</head>\n<body>\n</body>\n</html>")
showinfo("Информация", "\nБазовая страница сохранена с именем " + name + "\nИзменения будут применены после выхода из программы")

def about():
showinfo("About","By Grizzly\nVisit: http://python-tools.narod.ru")

def manual():
os.startfile("manual.chm")

s = open(".\Web-pages\style.css", "w")

def vwin():
win1 = Toplevel()
win1.geometry("400x311")
win1.title("Html editor text mode.")
win1.resizable(False, False)
lab1 = Label(win1, text="Код будет расположен между тегами <body>", fg="blue").place(x=5, y=5)
txt = Text(win1, fg="black", bg="grey", width=48, height=15).place(x=5, y=30)
bu1 = Button(win1, fg="blue", text="Внести изменения", width=20, height=1).place(x=5, y=277)
win2 = Toplevel()
win2.geometry("400x311")
win2.title("CSS editor text mode.")
win2.resizable(False, False)
lab2 = Label(win2, text="Код будет расположен в файле style.css", fg="blue").place(x=5, y=5)
txt2 = Text(win2, fg="black", bg="grey", width=48, height=15).place(x=5, y=30)
bu2 = Button(win2, fg="blue", text="Внести изменения", width=20, height=1).place(x=5, y=277)
g1 = txt.get()
g2 = txt2.get()
g1.StringVar()
g2.StringVar()

b1 = Button(tk, text="Создать каркас страницы", width=20, height=1, command=create, fg="blue")
b2 = Button(tk, text="Информация", width=20, height=1, command=about, fg="blue")
b3 = Button(tk, text="Окна редактирования", width=20,height=1, command=vwin, fg="blue")
b4 = Button(tk, text="Книга html", command=manual, width=20, height=1, fg="blue")
b5 = Button(tk, text="Выход", command=sys.exit, bg="red", fg="black", width=20, height=1)

b5.place(x=5, y=105)
b2.place(x=5, y=30)
b1.place(x=5, y=5)
b3.place(x=5, y=55)
b4.place(x=5, y=80)
tk.mainloop()
Нужна помощь



Отредактировано (Фев. 22, 2012 14:02:35)

Офлайн

#2 Фев. 22, 2012 15:32:07

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Взятие var из Text[]

>>> from Tkinter import *
>>> root = Tk()
>>> x = Button()
>>> x
0: <Tkinter.Button instance at 0x01E0C558>
>>> x = Button().pack()
>>> x
>>> print x
None
>>>
понятно?



Офлайн

#3 Фев. 22, 2012 16:11:00

Vikt3rBeginerInPyth
От:
Зарегистрирован: 2012-01-29
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Взятие var из Text[]

При чем тут связка x с кнопкой? Я вас не так понял разъясните.



Офлайн

#4 Фев. 22, 2012 16:26:05

Vikt3rBeginerInPyth
От:
Зарегистрирован: 2012-01-29
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Взятие var из Text[]

Сами окна вызываются, но ! Не записывает в файл. А при вызове окон светит то сообщение



Офлайн

#5 Фев. 22, 2012 16:49:28

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Взятие var из Text[]

метод pack place и grid возвращают None
txt = Text().place()
txt - уже None, так неправильно txt.get() вызовет ошибку

правильно:
txt = Text()
txt.place()
txt.get()



Офлайн

#6 Фев. 23, 2012 18:57:12

Vikt3rBeginerInPyth
От:
Зарегистрирован: 2012-01-29
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Взятие var из Text[]

sp3
метод pack place и grid возвращают None
txt = Text().place()
txt - уже None, так неправильно txt.get() вызовет ошибку

правильно:
txt = Text()
txt.place()
txt.get()
Thanks =)



Офлайн

#7 Фев. 23, 2012 19:10:45

Vikt3rBeginerInPyth
От:
Зарегистрирован: 2012-01-29
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Взятие var из Text[]

TypeError: get() takes at least 2 arguments (1 given)

Рано радовался. Вот что пишет. Код чуток изменил

from tkinter import *
from tkinter.messagebox import *
import sys
import time
import os

a = "1"

name = "page.html"

if os.path.exists(".\Web-pages\style.css"):
pass
else:
s = open(".\Web-pages\style.css", "w")
s.write("##CSS Style file gen by HtmlEdit")
s.close()

tk = Tk()
tk.geometry("161x140")
tk.title("Html Editor for Professional x1 BetaTest")
tk.resizable(False, False)
f = open(".\Web-pages\page.html", "w")
s = open(".\Web-pages\style.css", "w")

if os.path.exists("./Web-pages"):
showinfo("Папка существует.", "Папка Web-pages существует.\nВ папку будут помещены все созданные страницы.")
else:
os.mkdir("./Web-pages")

def wh():
f.write(txt.get())
showinfo("Информация", "Изменения будут применены \nпосле выхода из программы")

def wc():
s.write(txt.get())
showinfo("Информация", "Изменения будут применены \nпосле выхода из программы")

win1 = Toplevel()
win1.geometry("400x311")
win1.title("Html editor text mode.")
win1.resizable(False, False)
lab1 = Label(win1, text="Код будет расположен между тегами <body>", fg="blue").place(x=5, y=5)
txt = Text(win1, fg="black", bg="grey", width=48, height=15)
txt.place(x=5, y=30)
bu1 = Button(win1, fg="blue", text="Внести изменения", width=20, height=1, command=wh).place(x=5, y=277)
win2 = Toplevel()
win2.geometry("400x311")
win2.title("CSS editor text mode.")
win2.resizable(False, False)
lab2 = Label(win2, text="Код будет расположен в файле style.css", fg="blue").place(x=5, y=5)
txt2 = Text(win2, fg="black", bg="grey", width=48, height=15)
bu2 = Button(win2, fg="blue", text="Внести изменения", width=20, height=1, command=wc).place(x=5, y=277)
txt2.place(x=5, y=30)

def create():
print ("Creating...")
f.write("<html>\n<head>\n<LINK REL=STYLESHEET TYPE='text/css' HREF='style.css'>\n</head>\n<body>\n</body>\n</html>")
showinfo("Информация", "\nБазовая страница сохранена с именем " + name + "\nИзменения будут применены после выхода из программы")

def about():
showinfo("About","By Grizzly\nVisit: http://python-tools.narod.ru")

def manual():
os.startfile("manual.chm")

def site():
os.startfile("http://python-tools.narod.ru")

b1 = Button(tk, text="Создать каркас страницы", width=20, height=1, command=create, fg="blue")
b2 = Button(tk, text="Информация", width=20, height=1, command=about, fg="blue")
b3 = Button(tk, text="Посетить сайт", width=20,height=1, command=site, fg="blue")
b4 = Button(tk, text="Книга html", command=manual, width=20, height=1, fg="blue")
b5 = Button(tk, text="Выход", command=sys.exit, bg="red", fg="black", width=20, height=1)

b5.place(x=5, y=105)
b2.place(x=5, y=30)
b1.place(x=5, y=5)
b3.place(x=5, y=55)
b4.place(x=5, y=80)
tk.mainloop()



Офлайн

#8 Фев. 23, 2012 23:23:06

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Взятие var из Text[]

http://infohost.nmt.edu/tcc/help/pubs/tkinter.pdf
читай доки
get у Text нужно указать начало и конец куска текста



Офлайн

#9 Фев. 25, 2012 12:41:14

PythonStriker
От:
Зарегистрирован: 2012-02-25
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Взятие var из Text[]

Спасибо. Кому надо вот функции :

from tkinter import *
import os

path = os.path.dirname(sys.argv[0])
os.chdir(path)

f = open("File", "mode")
s = open("File", "mode")

def wh():
f.write(txt.get("1.0", "end"))
showinfo("Информация", "Изменения будут применены \nпосле выхода из программы")

def wc():
s.write(txt.get("1.0", "end"))
showinfo("Информация", "Изменения будут применены \nпосле выхода из программы")



Отредактировано (Фев. 25, 2012 12:44:09)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version