Найти - Пользователи
Полная версия: помогите найти ошибку
Начало » GUI » помогите найти ошибку
1 2 3
4kpt
Конечно. Ведь вы выполняете для вывода в шелле
print '|'+i+'  |'+prob,
print p[int(c_)][i]
А для вывода на экран (в новое окно) передаете вего лишь
ms = ms + prob
Ystritsa
Exception in Tkinter callback
Traceback (most recent call last):
File “C:\Python27\lib\lib-tk\Tkinter.py”, line 1410, in __call__
return self.func(*args)
File “C:\Python27\Копия 1.py”, line 106, in <lambda>
but.bind(“<Button-1>”, lambda e: get_course(c, win7, ms))
File “C:\Python27\Копия 1.py”, line 79, in get_course
ms = ms + ‘|’ + i + ‘ |’ + prob + p + “\n”
TypeError: cannot concatenate ‘str’ and ‘int’ objects
4kpt
Решение проблемы (попытка соединить целое число и строку):
ms = ms +'|' + str(i) + ' |' + str(prob) + str(p) + '\n'
Можне применить спецификаторы форматирования
ms = ms +"| %s | %s %s \n" %(i, prob, p)
Или метод format()
ms = ms +"| {0} | {1} {2} \n".format(i, prob, p)
Ystritsa
хорошо хоть одна проблема решена-уже выводит в окне информ.но
|visible | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|id | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|maxbytes | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|categoryid | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|showreports | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|startdate | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|defaultgroupingid | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|summaryformat | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|completionstartonenrol | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
|groupmode | [{'visible': 1, ‘id’: 1, ‘maxbytes’: 0, ‘categoryid’:0…………………и тд
.
.
.
.
и т.д.
т.е выводится и по горизонтали и по вертикали одно и то же(
4kpt
Дайте новый листинг…
И дайте хотя-бы одну строку полностью.
Ystritsa
from Tkinter import*
root = Tk()
def close(event = None):
    print "try_die"
def next_window2(ms):
    win1 = Toplevel()
    win1.title("ОНМУ")
    label2=Label(win1,text="Информация о курсе:") # метки
    label2.grid(row=1,column=1)
    label3=Label(win1,text="Инфо:")
    label3.grid(row=3,column=2)
    label3['text'] = ms
    but=Button(win1,text="Закрыть", width=50, height=2, bg="white", fg="blue") # Кнопки
    but.grid(row=2,column=2,padx=5,pady=5)
    but.bind("<Button-1>", lambda x: win1.destroy())                          
    print u'Операция завершена'
    
def get_course(c, win7, ms):
    c_ = c.get()
    mdl = MDL() 
    print mdl.conn_xmlrpc(server) 
    courses = ((c_),)
    p = mdl.get_courses(server)
    for i in p[int(c_)].keys():
        stroka = len(i)
        prob = ' '*(30 - stroka)
        print '|'+i+'  |'+prob,
        print p[int(c_)][i]
        # ms = ms +'|' + str(i) + ' |' + str(prob) + str(p) + '\n'
         #ms = ms +"| %s | %s %s \n" %(i, prob, p)
        ms = ms +"| {0} | {1} {2} \n".format(i, prob, p)
    win7.destroy()
    next_window2(ms)
    
def new6(event = None):
    ms = ''
    win7 = Toplevel()
    win7.title("Ввод данных")
    lbl1 = Label(win7, text = u"Введите номер курса")
    lbl1.grid(row=1,column=0,columnspan=2)
    c = Entry(win7, width="20")
    c.focus_force()
    c.grid(row=1,column=2,columnspan=2)
    but=Button(win7,text="Получить", width=18, height=2,)
    but.grid(row=2,column=2,ipadx=5,padx=10,pady=5)
    but.bind("<Button-1>", lambda e: get_course(c, win7, ms))
    but2=Button(win7,text="Закрыть", width=50, height=2, bg="white", fg="blue") # Кнопки
    but2.grid(row=3,column=2,ipadx=5,padx=10,pady=5)
    but2.bind("<Button-1>", lambda x: win7.destroy())
    
new6()
root.mainloop()
    
и это мы должны получить:
|visible  |                        1
|id  |                             4
|maxbytes  |                       2097152
|categoryid  |                     2
|showreports  |                    0
|startdate  |                      1351713600
|defaultgroupingid  |              0
|summaryformat  |                  1
|completionstartonenrol  |         0
|groupmode  |                      0
|numsections  |                    10
|showgrades  |                     1
|shortname  |                      ТРО
|enablecompletion  |               0
|hiddensections  |                 0
|format  |                         weeks
|completionnotify  |               0
|fullname  |                       Теория Распознавания Образов 4
|lang  |                           
|categorysortorder  |              20003
|timecreated  |                    1351700037
|groupmodeforce  |                 0
|forcetheme  |                     
|summary  |                        
|idnumber  |                       4
|newsitems  |                      5
|timemodified  |                   1355138540 
4kpt
Пробуем еще. Строку
ms = ms +"| {0} | {1} {2} \n".format(i, prob, p)
Заменить на строку
ms = ms +"| {0} | {1} {2} \n".format(i, prob, p[int(c_)][i])
Ystritsa
не,я уже пробывала такое(
 File "C:\Python27\Копия 1.py", line 81, in get_course
    ms = ms +"| {0} | {1} {2} \n".format(i, prob, p[int(c_)][i])
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

в шеле доходит до |shortname | а дальше эта ошибка.
4kpt
Попробуйте поменять строку:
 ms = ms +"| {0} | {1} {2} \n".format(i, prob, p[int(c_)][i])
На строку
 ms = ms +u"| {0} | {1} {2} \n".format(i, prob, p[int(c_)][i])
Ystritsa
да,спасибо Вам,это помогло!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB