Форум сайта python.su
0
С фрагментом
self.m_Parent = parent # Указатель на класс Tk в модуле Tix self.m_Parent.wm_title("PCAN-Basic Example") # Установить титул для данного виджета (окна). self.m_Parent.resizable(False,False) # Есть ли необходимость менять ширину и высоту окна? # Для данного окна привязать функцию имя WM_DELETE_WINDOW к функции self.Form_OnClosing self.m_Parent.protocol("WM_DELETE_WINDOW",self.Form_OnClosing)
self.m_Frame =Frame(self.m_Parent)
self.m_Frame.grid(row=0, column=0, padx=5, pady=2, sticky="nwes")
Вернее есть методы grid_bbox, grid_columnconfigure, grid_location, grid_propagate и т.д., но это ведь не одно и тоже?
Отредактировано eleks (Сен. 15, 2015 15:09:51)
Офлайн
0
>>> Frame.grid
<unbound method Frame.grid_configure>
>>> help(Frame.grid)
Help on method grid_configure in module Tkinter:
grid_configure(self, cnf={}, **kw) unbound Tkinter.Frame method
Position a widget in the parent widget in a grid. Use as options:
column=number - use cell identified with given column (starting with 0)
columnspan=number - this widget will span several columns
in=master - use master to contain this widget
in_=master - see 'in' option description
ipadx=amount - add internal padding in x direction
ipady=amount - add internal padding in y direction
padx=amount - add padding in x direction
pady=amount - add padding in y direction
row=number - use cell identified with given row (starting with 0)
rowspan=number - this widget will span several rows
sticky=NSEW - if cell is larger on which sides will this
widget stick to the cell boundary
Офлайн
0
Получается, что grid_configure и в самом деле синоним для grid.
Офлайн
0
Shaman и i.slepov, спасибо! В принципе разобрался.
Офлайн
0
Возникли некоторые проблемы с данными объявленными внутри класса. Это сообщение CAN
class TPCANMsg (Structure): _fields_ = [ ("ID", c_ulong), # 11/29-ти битный идентификатор сообщения ("MSGTYPE", TPCANMessageType), # Тип сообщения ("LEN", c_ubyte), # Код длины данных сообщения (0..8) ("DATA", c_ubyte * 8) ] # Данные сообщения (DATA[0]..DATA[7])
CANMsg = TPCANMsg() # CANMsg.ID = 0x200 CANMsg.LEN = 0x08 CANMsg.MSGTYPE = PCAN_MESSAGE_STANDARD for i in range(CANMsg.LEN): CANMsg.DATA[i] = int(self.m_DataEdits[i].get(),16)
>>> CANMsg
<PCANBasic.TPCANMsg object at 0x0000000002FD6948>
>>> m_obj.Write(PCAN_USBBUS1, CANMsg)
0
>>> m_obj.Read(PCAN_USBBUS1)
(0, <PCANBasic.TPCANMsg object at 0x000000000304F7C8>, <PCANBasic.TPCANTimestamp object at 0x000000000304F348>)
Отредактировано eleks (Сен. 17, 2015 14:38:41)
Офлайн
0
Пытаюсь посмотреть непосредственно объект
>>> TPCANMsg
<class 'PCANBasic.TPCANMsg'>
>>> ss = PCANBasic.TPCANMsg
Traceback (most recent call last):
File "<pyshell#96>", line 1, in <module>
ss = PCANBasic.TPCANMsg
AttributeError: class PCANBasic has no attribute 'TPCANMsg'
>>>
Офлайн
0
В качестве некоторого логического завершения темы, привожу простенькую терминальную программу для PCAN-USB адаптера
# -*- coding: cp1251 -*- ###################################################################### # Мой первый терминал на Python ###################################################################### from PCANBasic import * # Импорт библиотеки PCAN-Basic import time # def ProcessMessage(*args): theMsg = args[0][0] itsTimeStamp = args[0][1] newMsg = TPCANMsg() newMsg.ID = theMsg.ID print "->", print "%X" % newMsg.ID, newMsg.DLC = theMsg.LEN for i in range(theMsg.LEN): newMsg.DATA[i] = theMsg.DATA[i] print "%X" % newMsg.DATA[i], print newMsg.MSGTYPE = theMsg.MSGTYPE # newTimestamp = TPCANTimestampFD() # newTimestamp.value = (itsTimeStamp.micros + 1000 * itsTimeStamp.millis + 0x100000000 * 1000 * itsTimeStamp.millis_overflow) # self.ProcessMessageFD([newMsg, newTimestamp]) # x = 0 while x == 0: print "Выберите желаемую скорость обмена: 1 - 125кбит/сек, 2 - 500кбит/сек" x = int(raw_input("-> ")) if x == 1: baudrate = PCAN_BAUD_125K elif x == 2: baudrate = PCAN_BAUD_500K else: print "Сделайте допустимый выбор" x = 0 ###################################################################### m_obj = PCANBasic() result = m_obj.Initialize(PCAN_USBBUS1, baudrate, PCAN_TYPE_ISA, 0x02A0, 0x11) if result != PCAN_ERROR_OK: print "Не подключен адаптер!" else: ###################################################################### x = 0 while x == 0: ## print "Введите HEX-строку посылки, через пробел, в формате" print "-> CID D0 D1 D2 D3 D4 D5 D6 D7" string_input = raw_input("-> ") input_list = string_input.split() inp_list = [] inp_list = [ i for i in range(len(input_list))] for i in range(len(input_list)): inp_list[i] = int(input_list[i],16) ###################################################################### CANMsg = TPCANMsg() CANMsg.ID = inp_list[0] CANMsg.LEN = len(input_list) - 1 CANMsg.MSGTYPE = PCAN_MESSAGE_STANDARD for i in range(len(input_list) - 1): CANMsg.DATA[i] = inp_list[i + 1] result = m_obj.Write(PCAN_USBBUS1, CANMsg) if result != PCAN_ERROR_OK: print "Ошибка передачи!" continue ###################################################################### time.sleep(0.1) result = m_obj.Read(PCAN_USBBUS1) if result[0] != PCAN_ERROR_OK: print "Нет ответа!" ProcessMessage(result[1:]) ###################################################################### print "Если продолжить, то 0. Иначе любое другое число" x = int(raw_input("-> "))
Отредактировано eleks (Сен. 18, 2015 17:28:47)
Офлайн