Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 17, 2008 07:52:44

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter и потоки

при использовании запятой происходит упаковка в кортеж.
при запяточии - нет.



Офлайн

#2 Окт. 17, 2008 09:04:40

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter и потоки

Спасибо. Я это подозревал.

Но что/кто упаковывает в кортеж? И как этот кортеж дальше используется ?

И почему с запятой и запяточием работает одинаково ?

Спасибо заранее.



Офлайн

#3 Окт. 17, 2008 09:42:20

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter и потоки

запятая упаковывает в кортеж. никак не используется.

>>> a = 11
>>> b = 22
>>> c = 33
>>> x = a, b, с
>>> print x
(11, 22, 33)
>>> a, b, с = x # распаковываем
в случае с запятой, чтобы составить кортеж вызывается 2 метода и составляется кортеж из возвращенных значений.
в случае с зяпяточием происходит просто вызов 2-х методов.



Офлайн

#4 Окт. 17, 2008 10:12:16

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter и потоки

Спасибо, все понял.



Офлайн

#5 Ноя. 24, 2008 11:52:27

питекантроп
От:
Зарегистрирован: 2008-10-28
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter и потоки

мужики, есть такой класс:

from Tkinter import *
from sys import *
from thread import *
from threading import *
from time import *

class TK:

def SER(self,res,err):#ShowExpectedResults
self.res = res
self.err = err
self.root = Tk()

self.F = Frame (self.root)
self.F.pack()
self.label = Label(self.F, height = 1, text = " ")
self.label.grid(row = 0)

self.flag1 = IntVar()
self.flag2 = IntVar()
self.flag3 = IntVar()
self.flag4 = IntVar()
self.flag5 = IntVar()
self.flag6 = IntVar()
self.flags = [self.flag1,self.flag2,self.flag3,self.flag4,self.flag5,self.flag6]

self.checkbutton1 = Checkbutton(self.F,variable = self.flags[0])
self.checkbutton2 = Checkbutton(self.F,variable = self.flags[1])
self.checkbutton3 = Checkbutton(self.F,variable = self.flags[2])
self.checkbutton4 = Checkbutton(self.F,variable = self.flags[3])
self.checkbutton5 = Checkbutton(self.F,variable = self.flags[4])
self.checkbutton6 = Checkbutton(self.F,variable = self.flags[5])
self.arr = [self.checkbutton1,self.checkbutton2,self.checkbutton3,self.checkbutton4,self.checkbutton5,self.checkbutton6]


for i in range(0,len(self.res)):
self.arr[i]["text"] = self.res[i]
self.arr[i].select()
self.arr[i].grid(row=i+1, column=0, sticky = W, ipadx = 10)
self.arr[i].config (font = (13))
self.button = Button(self.F)
self.button["width"]= 18
self.button["text"]= "OK"
self.button.bind("<Button>",self.check)
self.button.grid(pady = 14)
self.root.title('Ожидаемые результаты')
self.root.resizable(0,0)
self.root.bell()
self.root.mainloop()

def check(self,event):
for i in range(0,len(self.res)):
if self.flags[i].get() == 0:
test.fail(self.err[i])
self.root.destroy()

def CL(self,res,err):
res = []
err = []

def SM(self, Text):
self.root1 = Tk()
self.F = Frame(self.root1)
self.F.pack()
self.label1 = Label (self.F, text = "")
self.label1.grid(row = 0)
self.label = Label (self.F, text = Text)
self.label.grid(row = 1, ipadx = 10)
self.label.config(font = (13))
self.root1.title('Внимание!')
self.root1.resizable(0,0)
Thread(target = self.run, name = "t2").start()
self.root1.mainloop()


def run(self):
sleep(3)
self.root1.destroy()

res = []

res.append(u"Окна имеют одинаковый размер")
res.append(u'Окна не выходят за пределы основного окна')
res.append('qwe3qwe3qwe3qwe3')
res.append('qwe4qwe4qwe4qwe4')
res.append('qwe5qwe5qwe5qwe5')


err = []

err.append('QWE1')
err.append('QWE2')
err.append('QWE3')
err.append('QWE4')
err.append('QWE5')

n = TK()
n.SM("sdfsdf")

#sleep(0.5)
n.SER(res,err)

n.SM("sdfsdf")
проблема в том, что при первом создании окна методом SM оно через 3 секунды не закрывается, а тупо виснет, и при дальнейшей работе Python закрывается с критической ошибкой.
как правильно организовать работу потоков или вообще закрытие окна?



Отредактировано (Ноя. 24, 2008 16:06:00)

Офлайн

#6 Ноя. 24, 2008 13:20:56

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Tkinter и потоки

Стоило сделать отдельную тему.

self.err = err
self.root = Tk()

self.F = Frame (self.root)
self.F.pack()
Это так форматирование поехало, или в изначальном коде так же?
Какую ошибку выбрасывает питон?

Офлайн

#7 Ноя. 24, 2008 15:29:25

питекантроп
От:
Зарегистрирован: 2008-10-28
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter и потоки

Ferroman
Это так форматирование поехало, или в изначальном коде так же?
форматирование поехало..

Какую ошибку выбрасывает питон?
AppName: python.exe AppVer: 0.0.0.0 ModName: tk84.dll
ModVer: 8.4.2.7 Offset: 0006419a

если это о чем-то скажет.. )



Офлайн

#8 Ноя. 24, 2008 15:52:41

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Tkinter и потоки

питекантроп
AppName: python.exe AppVer: 0.0.0.0 ModName: tk84.dll
ModVer: 8.4.2.7 Offset: 0006419a

если это о чем-то скажет.. )
хм…. Что то вообще у тебя странный код… в stderr что нибудь вообще вылазит? Если нет, то ты библиотеку tk запутал….
на dumpz.org попробуй выложить исходник, разберемся, а то лень форматирование править…



Отредактировано (Ноя. 24, 2008 15:54:40)

Офлайн

#9 Ноя. 24, 2008 16:23:16

питекантроп
От:
Зарегистрирован: 2008-10-28
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter и потоки

igor.kaist
хм…. Что то вообще у тебя странный код… в stderr что нибудь вообще вылазит? Если нет, то ты библиотеку tk запутал….
на dumpz.org попробуй выложить исходник, разберемся, а то лень форматирование править…
форматирование исправил..
http://dumpz.org/3628/ - это оно?

если не сложно, напиши как посмотреть, что в stderr выводится..



Офлайн

#10 Ноя. 24, 2008 18:45:51

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Tkinter и потоки

ооо…. ты где этот код взял? :)))
Одну ошибку исправляешь, вторая появляется… я на 5 сдался…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version